Mysql
 sql >> Database >  >> RDS >> Mysql

MySQLi non riesce a preparare una dichiarazione

Tutte le funzioni/metodi mysqli possono fallire nel qual caso restituiranno false. Cioè. se prepare() fallisce $stmt non è un oggetto su cui puoi chiamare un metodo ma un bool(false). Devi controllare i valori restituiti e aggiungere un po' di gestione degli errori, ad es.

$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

vedere http://docs.php.net/mysqli-stmt.errno e altri

in questo caso probabilmente ti sei imbattuto nel problema che non puoi creare un'altra istruzione mentre ci sono ancora risultati/set di risultati in sospeso per l'istruzione precedente.
vedi http://docs.php.net/mysqli-stmt.close :