我对准备好的陈述很新。
这是我的代码:
<?php
$getImages=$db->prepare("SELECT * FROM header_image_arabic");
$getImages->bind_param('s', '$images');
$getImages->execute();
$getImages->bind_result($returned_images);
while($img=$returned_images->fetch_object()){
?>
这是错误:
致命错误:无法在第22行的C:\ wamp \ www \ arabia \ admin \ includes \ pan \ imageHeader.php中通过引用传递参数2
这个错误是什么意思?
答案 0 :(得分:4)
这里有很多错误。
'$images'
是一个包含7个字符的字符串。您希望将变量传递给bind_param
,而不是字符串。
$getImages->bind_param('s', $images);
另外,你想要绑定到 查询中没有占位符(问号)。你可以在这里使用$db->query()
。您只需在填写数据时“准备”查询。
$getImages = $db->query('SELECT * FROM header_image_arabic');
if($getImages === FALSE){
die($db->error);
}
while($img = $getImages->fetch_object()){
}
另一件事是:$getImages->bind_result($returned_images);
。 bind_result
用于绑定查询中的字段。你不能在这里使用它,因为你正在做SELECT *
。 (另外,fetch_object
和bind_result
不能一起使用。您需要使用get_result
(仅适用于mysqlnd驱动程序)才能使用{ {1}}。)
所以,如果你想使用“预备语句”,它看起来像这样:
fetch_object
或者像这样(需要mysqlnd驱动程序):
$getImages = $db->prepare("SELECT image_id FROM header_image_arabic WHERE name = ?");
$getImages->bind_param('s', $images);
$getImages->execute();
$getImages->bind_result($returned_images);
while($getImages->fetch()){
// This will get updated each iteration
echo $returned_images;
}