1

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.

Jopc67
  • 79
  • 1
  • 6

2 Answers2

3

Desc is a MySQL reserved word. If you want to use it as a column or table name, you must enclose it in backticks (`)

Mark Baker
  • 209,507
  • 32
  • 346
  • 385
1

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.

LSerni
  • 55,617
  • 10
  • 65
  • 107