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();
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
.