sql >> Base de Datos >  >> RDS >> Mysql

MySQLi no puede preparar una declaración

Todas las funciones/métodos de mysqli pueden fallar, en cuyo caso devolverán false. Es decir. si prepare() falla, $stmt no es un objeto al que pueda llamar un método, sino un bool (falso). Debe verificar los valores devueltos y agregar un manejo de errores, por ejemplo,

$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

consulte http://docs.php.net/mysqli-stmt.errno y otros

en este caso, probablemente se encontró con el problema de que no puede crear otra declaración mientras todavía hay resultados/conjuntos de resultados pendientes para la declaración anterior.
consulte http://docs.php.net/mysqli-stmt.close :