Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQLi ne parvient pas à préparer une déclaration

Toutes les fonctions/méthodes mysqli peuvent échouer, auquel cas elles renverront false. C'est à dire. si prepare() échoue $stmt n'est pas un objet sur lequel vous pouvez appeler une méthode mais un bool(false). Vous devez vérifier les valeurs de retour et ajouter une gestion des erreurs, par exemple

$stmt = $mysqli->prepare('SELECT name FROM `rooms` WHERE r_id=?');
if ( !$stmt ) {
    printf('errno: %d, error: %s', $mysqli->errno, $mysqli->error);
    die;
}

$b = $stmt->bind_param('i', $roomID);
if ( !$b ) {
    printf('errno: %d, error: %s', $stmt->errno, $stmt->error);
}

$b = $stmt->execute();
if ( !$b ) {
  and so on and on

voir http://docs.php.net/mysqli-stmt.errno et al

dans ce cas, vous avez probablement rencontré le problème que vous ne pouvez pas créer une autre instruction alors qu'il y a encore des résultats/ensembles de résultats en attente pour l'instruction précédente.
voir http://docs.php.net/mysqli-stmt.close :