MySQLi调用非对象的成员函数bind_param()错误[duplicate]

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.