This question already has an answer here:
This is weird. I'm only adding one variable to the prepare() and bind_result() and it causes an error. Here's the code that worked:
$id = $_GET['id'];
$result = $mysqli->prepare("SELECT YiD, Title FROM Videos WHERE iD = ?");
$result->bind_param("s",$id);
$result->bind_result($youtubeid, $youtubetitle);
$result->execute();
$result->store_result();
$result->fetch();
Now here's the code that didn't work:
$id = $_GET['id'];
$result = $mysqli->prepare("SELECT YiD, Title, Desc FROM Videos WHERE iD = ?");
$result->bind_param("s",$id);
$result->bind_result($youtubeid, $youtubetitle, $youtubedesc);
$result->execute();
$result->store_result();
$result->fetch();
and it gave me this error - Fatal error: Call to a member function bind_param() on a non-object in /home/content/77/9901377/html/video.php on line 23
Line 23 is the bind_param("s",$id)
I've called the database correctly and everything works in the first code, but when I add some more variables to the code it doesn't work.
</div>
Desc is a MySQL reserved word. If you want to use it as a column or table name, you must enclose it in backticks (`)
The problem is that $result
is not an object.
It is an error code or False
, because you used Desc
(which is a reserved keyword) here:
$result = $mysqli->prepare("SELECT YiD, Title, Desc FROM Videos WHERE iD = ?");
so that $mysqli->prepare
returned an error instead of a SQLi object suitable for parameter binding.
Try quoting the column name.