Wszystkie funkcje/metody mysqli mogą zawieść i zwrócą wartość false. Tj. jeśli przygotowanie() się nie powiedzie, $stmt nie jest obiektem, na którym można wywołać metodę, ale bool(false). Musisz sprawdzić zwracane wartości i dodać obsługę błędów, np.
$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
zobacz http://docs.php.net/mysqli-stmt.errno i in.
w tym przypadku prawdopodobnie natknąłeś się na problem polegający na tym, że nie możesz utworzyć innej instrukcji, gdy nadal istnieją oczekujące zestawy wyników/wyników dla poprzedniej instrukcji.
zobacz http://docs.php.net/mysqli-stmt.close
: