[英]Run another sql query inside foreach loop
我從第一個sql查詢中有一個foreach循環,然后在該foreach循環中,我想運行另一個sqli查詢,但出現此錯誤: Call to a member function prepare() on a non-object
這是我的查詢:
$sqli = "SELECT DISTINCT approveby FROM ads LIMIT 0,20";
$resulti = $conn->prepare($sqli);
$resulti->execute();
foreach ($resulti as $rowi){
$sqlii = "SELECT * FROM ads WHERE approveby=:approveby ORDER BY approvedate ASC";
$resultii = $conn->prepare($sqlii);
$resultii->bindParam(':approveby', $rowi['approveby']);
$resultii->execute();
$num_rowsii=$resultii->rowCount();
echo "This person: ". $rowi['approveby']."has approved $num_rowsii advertisements";
}
上面代碼的原因是:
可以從表格廣告中批准廣告的人不同。 會有一個人批准許多廣告。 所以第一個查詢,我想列出剛剛批准廣告的人。
第二個查詢,我想計算每個人的批准總數。
所以,請告訴我如何解決以上錯誤? 還有反正可以更有效地做到這一點嗎?
非常感謝
您可以通過單個查詢獲得結果,使用GROUP BY
而不是DISTINCT
結果,然后計算結果將顯示每個組的總廣告,請嘗試此查詢
$sqli = "SELECT *, count(*) AS `total_advertisements` FROM ads
GROUP BY approveby
ORDER BY approvedate ASC
LIMIT 0,20";
$resulti = $conn->prepare($sqli);
$resulti->execute();
foreach ($resulti as $rowi){
echo "This person: ". $rowi['approveby']."has approved {$rowi['total_advertisements']} advertisements";
}
該代碼根本無法正常運行。 而是將兩個查詢組合如下:
$sql = "SELECT approveby, count(*) FROM ads GROUP BY approveby"
$result = $conn->prepare($sql);
$result->execute();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.