簡體   English   中英

在foreach循環中運行另一個SQL查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM