这个问题在这里已有答案:
这很奇怪 . 我只在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 回答
Desc是MySQL reserved word . 如果要将其用作列名或表名,则必须将其括在反引号中(`)
问题是
$result
不是一个对象 .这是一个错误代码或
False
,因为你在这里使用了Desc
(这是一个保留关键字):以便
$mysqli->prepare
返回错误而不是适合参数绑定的SQLi对象 .尝试引用列名称 .