所以我做了一個查詢返回許多餐館,我把它們放在一個變量$行:PHP數組到字符串轉換
<?php if(count($Result_restaurants)>0)
{
foreach($Result_restaurants as $row)
{ ?>
<div id="ForEveryRestaurant">
<?php
$Rest_Name = $row['name'];
//$Rest_Name = $row;
$stmt = $db->prepare("SELECT Restaurant.idRestaurant FROM Restaurant WHERE Restaurant.name = \"$Rest_Name\"");
$stmt->execute();
$idRestaurant = $stmt->fetch();
$avg = 0;
$rateSum = 0;
$strcard = "SELECT rating FROM Review WHERE Review.idRestaurant = $idRestaurant";
$stmtcard = $db->prepare($strcard);
$stmtcard->execute();
$result = $stmtcard->fetchAll();
if (count($result) === 0)
{
return 0;
}
foreach($result as $coments)
{
$rateSum += $coments['rating'];
}
$avg = $rateSum/count($result);
$avg = round($avg, 1);
當我嘗試運行我的代碼,它打印數組到字符串轉換。
的問題出現在這行:
$strcard = "SELECT rating FROM Review WHERE Review.idRestaurant = $idRestaurant";
我搜索有關該錯誤的,我理解,但我試過許多決議並沒有解決這個問題。
有人可以幫忙嗎?
'的var_dump( $ idRestaurant);'?如果問題確實存在於「SELECT評分FROM Review WHERE Review.idRestaurant = $ idRestaurant」字符串中,那麼$ idRestaurant是一個數組。但'mysqli_stmt_fetch'返回'bool'。您應該綁定結果變量。 –
怎麼了解除引用的答案?首先教導OP如何正確使用預處理語句,不要直接將變量插入到查詢語句中,在語句中使用佔位符並使用簡單的' - > bindValue'方法綁定變量。如果你只是將它們直接用於字符串,就像使用撬棒敲釘子一樣,準備好語句的用途是什麼 – Ghost
爲什麼在這個線程中的每個答案都被低估了? – Ronald