MySQLi failing to prepare a statement

前端 未结 1 1585
有刺的猬
有刺的猬 2021-01-28 03:38

I\'m running two queries in my script room.php. Both are using MySQLi prepared statements, and their code are as follows:

/* Get room name */
$stmt          


        
相关标签:
1条回答
  • 2021-01-28 03:48

    All of the mysqli functions/methods can fail in which case they will return false. I.e. if prepare() fails $stmt isn't an object you can call a method on but a bool(false). You have to check the return values and add some error handling, e.g.

    $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
    

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


    in this case you probably bumped into the problem that you can't create an other statement while there are still results/result sets pending for the previous statement.
    see http://docs.php.net/mysqli-stmt.close:

    Closes a prepared statement. mysqli_stmt_close() also deallocates the statement handle. If the current statement has pending or unread results, this function cancels them so that the next query can be executed.
    0 讨论(0)
提交回复
热议问题