簡體   English   中英

SQLite3計數行

[英]SQLite3 count rows

我正在嘗試計算查詢返回的行數

這是我現在的代碼

function products()
{
$loggedin = loggedin();
$db = db();

$stmt = $db->prepare('SELECT game_id, name, developer, price FROM game   WHERE quantity > 0 ORDER BY game_id DESC');
$result = $stmt->execute();
$row1 = $result->fetchArray();
$rows = count ($row1); 

if ($rows == 0)
    {
    echo "Sold out";
    }
else
    {
    while ($row = $result->fetchArray()) {
    echo '<p>'.$row['name'].'</p>';

    }
    }
}

目前,即使所有行都匹配,它也只會返回表中的第一項

如果我將代碼更改為

function products()
{
$loggedin = loggedin();
#$page = 'index.php';
$db = db();
$stmt = $db->prepare('SELECT game_id, name, developer, price FROM game   WHERE quantity > 11 ORDER BY game_id DESC');
$result = $stmt->execute();
while ($row = $result->fetchArray()) {
    echo '<p>'.$row['name'].'</p>';

}

然后我從表中正確獲得所有結果

如果我將查詢更改為超出數量的值,例如

quantity > 20

然后我得到了錯誤

Warning: count(): Parameter must be an array or an object that implements Countable

我想做的是,如果row1 == 0,則該節目售罄,否則將顯示所有行

因此,如果某行與查詢不匹配,則該行將不包含在結果中,我無法使用PDO,並且無法在https://www.php.net/manual/en/上找到要使用的計數book.sqlite3.php

那應該做。

function products() {
    $loggedin = loggedin();
    $db = db();
    $games = $db->query('SELECT game_id, name, developer, price FROM game WHERE quantity > 0 ORDER BY game_id DESC');

    if (empty($games->fetchArray())) {
        echo "Sold out";
        return;
    }

    // Reset the result back to the first game
    $games->reset();

    while ($game = $games->fetchArray(SQLITE3_ASSOC)) {
        echo '<p>'.$game['name'].'</p>';  
    }
}

我會做類似的事情:

function products() {
    $db = db();
    $stmt = $db->prepare('SELECT game_id, name, developer, price FROM game WHERE quantity > 0 ORDER BY game_id DESC');
    $result = $stmt->execute();
    $count = 0;

    while ($row = $result->fetchArray()) {
        echo '<p>'.$row['name'].'</p>';
        $count++;  
    }

    if ($count == 0) {
        echo "<p>Sold out</p>";
    }
}

找出查詢返回多少行的唯一方法是獲取所有這些行(您實際上並不關心返回的行數,只是至少返回了一行)。 因此,只需為返回的每一行增加一個計數器,然后逐步瀏覽所有行,如果該計數器仍為0,則表示沒有返回任何行,您可以顯示相關的消息。

暫無
暫無

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

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