1

这很奇怪。我只向 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)

我已经正确调用了数据库,并且在第一个代码中一切正常,但是当我向代码中添加更多变量时,它就不起作用了。

4

2 回答 2

3

Desc 是MySQL 的保留字。如果要将其用作列名或表名,则必须将其括在反引号 (`) 中

于 2012-09-26T21:21:46.240 回答
1

问题是它$result不是一个对象。

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

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

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

尝试引用列名。

于 2012-09-26T21:22:28.390 回答