Call to a member function bind_param() on a non-ob

2019-01-09 17:54发布

问题:

Okay, so I'm trying to update a blog entry, and I'm getting Call to a member function bind_param() on a non-object when I try to run the script. I have done extensive research to see if I could fix it myself, but I must be missing something.

<?php
$stmt = $mysqli->prepare("UPDATE blogentries SET 
  headline = ?, 
   image = ?, 
   caption = ?,  
   article = ?
    WHERE id = ?");
$stmt->bind_param('ssssi',
   $_POST['headline'],
   $_POST['image'],
   $_POST['caption'],
   $_POST['article'],
   $_POST['id']);
$stmt->execute(); 
$stmt->close();

?>

Thanks in advance,

Austen

Update: Here's the db connect

I added the extra $mysqli connection for debugging purposes, and the error occurs even without it.

回答1:

$stmt is probably false.

if ($stmt = $mysqli->prepare(...)) {
    $stmt->bind_param(...);
    ...
}
else {
    printf("Errormessage: %s\n", $mysqli->error);
}


回答2:

I solved that by testing the queries manually. It turned out to be a matter of putting each field name between back ticks and removing any quotes against the parameters labeled with question marks inside the query.



回答3:

If all the connections to the database are correct, try looking for the syntax in the query. For me, I was performing a join and did not specify the "TABLENAME" in the where clause-field for which both the tables have a column.



标签: php mysqli