MySQLi在非对象Error上调用成员函数bind_param()

时间:2012-09-26 21:14:47

标签: php mysql mysqli

这很奇怪。我只在prepare()和bind_result()中添加一个变量,它会导致错误。这是有效的代码:

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

现在这里的代码不起作用:

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

并且它给了我这个错误 - 致命错误:在第23行的/home/content/77/9901377/html/video.php中的非对象上调用成员函数bind_param()

第23行是bind_param(“s”,$ id)

我已经正确地调用了数据库,并且所有内容都在第一个代码中运行,但是当我向代码中添加更多变量时,它不起作用。

2 个答案:

答案 0 :(得分:3)

Desc是MySQL reserved word。如果要将其用作列名或表名,则必须将其括在反引号(`)

答案 1 :(得分:1)

问题是$result不是对象。

这是一个错误代码或False,因为你在这里使用了Desc(这是一个保留关键字):

 $result = $mysqli->prepare("SELECT YiD, Title, Desc FROM Videos WHERE iD = ?");

以便$mysqli->prepare返回错误而不是适合参数绑定的SQLi对象。

尝试引用列名称。