Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQLi falhando ao preparar uma declaração


Todas as funções/métodos do mysqli podem falhar, caso em que retornarão false. Ou seja se prepare() falhar $stmt não é um objeto no qual você pode chamar um método, mas um bool(false). Você precisa verificar os valores de retorno e adicionar algum tratamento de erro, por exemplo.
$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

veja http://docs.php.net/mysqli-stmt.errno e outros

neste caso, você provavelmente se deparou com o problema de não poder criar uma outra instrução enquanto ainda houver resultados/conjuntos de resultados pendentes para a instrução anterior.
consulte http://docs.php.net/mysqli-stmt.close :