Всички функции/методи на mysqli могат да се провалят, в който случай те ще върнат false. т.е. ако подготовката() не успее, $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
: