すべてのmysqli関数/メソッドが失敗する可能性があり、その場合、falseが返されます。つまりprepare()が失敗した場合、$ stmtはメソッドを呼び出すことができるオブジェクトではなく、bool(false)です。戻り値を確認し、エラー処理を追加する必要があります。例:
$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
http://docs.php.net/mysqli-stmt.errno を参照してください。 et al
この場合、前のステートメントに対して保留中の結果/結果セットがまだある間は、他のステートメントを作成できないという問題に遭遇した可能性があります。
http://docs.php.net/mysqli-stmt.close
: