这很奇怪。我只在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)
我已经正确地调用了数据库,并且所有内容都在第一个代码中运行,但是当我向代码中添加更多变量时,它不起作用。
答案 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对象。
尝试引用列名称。