簡體   English   中英

php-在foreach中獲取結果總數

[英]php - get total of number of results in foreach

我有一個foreach循環,它將在我的數據庫中進行搜索。 我想獲取搜索返回的總行數。

目前,我有這個:

foreach ($stmt as $row) {

    $search=$dbh->prepare("SELECT * FROM advertisement_clicks WHERE username=:username AND token=:token");
    $search->bindParam(":username",$userdata['id']);
    $search->bindParam(":token",$row['token']);
    $search->execute();
    echo $search->rowCount(); 

}

這將打印出來: 00001100如何獲得它們的總結果? (在這種情況下為2)

更好的是,如何在foreach循環之外獲得總結果?

循環外的代碼是這樣的:

$stmt = $dbh->prepare("SELECT * FROM advertisements WHERE status='2' AND fixed='1' AND fixed_expire>:time AND membershipFilter='0'");
$stmt->bindParam(":time",time());
$stmt->execute();
$f=$stmt->rowCount();

您可以執行以下操作-

$count = 0 ;

foreach ($stmt as $row) {

    $search=$dbh->prepare("SELECT * FROM advertisement_clicks WHERE username=:username AND token=:token");
    $search->bindParam(":username",$userdata['id']);
    $search->bindParam(":token",$row['token']);
    $search->execute();
    $count += $search->rowCount(); 

}

echo $count ;

用像htis這樣的變量來計數:

$total = 0;
foreach ($stmt as $row) {

    $search=$dbh->prepare("SELECT * FROM advertisement_clicks WHERE username=:username AND token=:token");
    $search->bindParam(":username",$userdata['id']);
    $search->bindParam(":token",$row['token']);
    $search->execute();
    $total +=  $search->rowCount(); 


}

$total將保存總值。

上述參與者都沒有真正理解他們編寫的代碼的含義:)
同樣,即使在這種特殊情況下,行號也不要太高,否則絕對不能將rowCount用於此目的。

$total  = 0;
$query  = "SELECT count(*) FROM advertisement_clicks 
           WHERE username=:username AND token=:token";
$search = $dbh->prepare($query);
$search->bindParam(":username", $userdata['id']);
$search->bindParam(":token",    $row['token']);

foreach ($stmt as $row) {
    $search->execute();
    $total += $search->fetchColumn(); 
}

它必須是

另外,假設$ stmt是上一個查詢的結果,則大多數情況下,您可以使用GROUP BY運算符在其他查詢中獲得計數。 根本沒有這樣的額外循環

$x = 0;
foreach ($stmt as $row) {

$search=$dbh->prepare("SELECT * FROM advertisement_clicks WHERE username=:username AND token=:token");
   $search->bindParam(":username",$userdata['id']);
   $search->bindParam(":token",$row['token']);
   $search->execute();
   echo $search->rowCount(); 
   $x++;
}
echo $x;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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