Pergunta

Eu tenho duas declarações mysqli subseqüentes, eo segundo retorna:

Erro fatal: Chamada a um bind_param função membro () em um não-objeto em ...

Por que isso acontece? Será que isso significa que eu preciso para abrir dois conexão diferente? Existe alguma maneira de evitar isso (eu amo mantendo os detalhes de conexão SQL em um arquivo)?

Aqui o código:

$db = new mysqli("localhost", "root", "", "database");

$stmt = $db->prepare("UPDATE posts SET vote_".$_POST['vote']." = vote_".$_POST['vote']." + 1 WHERE id=?");
$stmt->bind_param('s', $_POST['id_post']);
$stmt->execute();
$stmt->close();

$stmt = $db->prepare("INSERT INTO votes (kind, users_id, posts_id) VALUES (?, ?, ?)");
$stmt->bind_param('sss',$_POST['vote'],$_POST['id_user'],$_POST['id_post']);
$stmt->execute();
$stmt->close();
Foi útil?

Solução

Verifique o valor de retorno de mysqli :: prepare . Se for FALSE, você deve obter os detalhes para o erro ocorreu com mysqli :: erro .

Outras dicas

Eu acho que sua variável stmt $ é nulo quando você chamar bind_param sobre ele. talvez o seu $ _POST [ 'voto'] está vazio? você pode verificá-lo antes de ligar o param no comando

Algo pode ter errado ido com $db->prepare(), verificação $db->error.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top