sql >> Databasteknik >  >> RDS >> Mysql

MySQLi misslyckas med att förbereda ett uttalande

Alla mysqli-funktioner/-metoder kan misslyckas i vilket fall de kommer att returnera false. d.v.s. om prepare() misslyckas är $stmt inte ett objekt som du kan anropa en metod på utan en bool(false). Du måste kontrollera returvärdena och lägga till viss felhantering, t.ex.

$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

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

i det här fallet stötte du förmodligen på problemet att du inte kan skapa ett annat uttalande medan det fortfarande finns resultat/resultatuppsättningar som väntar för det tidigare uttalandet.
se http://docs.php.net/mysqli-stmt.close :




  1. SQLite Subquery

  2. Hur man installerar MySQL med phpMyAdmin på Ubuntu 14.04

  3. Hur rengör (förhindrar SQL-injektion) dynamisk SQL i SQL Server?

  4. Zip med Oracle Stored Procedure