簡體   English   中英

如何使用 PHP 獲取 MySQL 表中的行數?

[英]How to get count of rows in MySQL table using PHP?

我只是想使用 PHP 來計算 MySQL 表中的總行數,並將該數字存儲在名為$count的變量中。

我更喜歡過程代碼,因為我的思想不能以面向對象的方式工作。

$sql="SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result);
echo $count;

以上是我嘗試過的最新版本。 它沒有給我一個數字,而是給了我“數組”這個詞。

您有幾個選擇如何從 SQL 獲取COUNT(*)的值。 最簡單的三個可能是這樣的:

$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['COUNT(*)'];
echo $count;

或使用列別名:

$sql = "SELECT COUNT(*) as cnt FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['cnt'];
echo $count;

或使用數值數組:

$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_row($result)[0];
echo $count;

不要按照 web 上某些地方的建議使用mysqli_num_rows來統計數據庫中的記錄。 這個function用處很少,計數記錄絕對不是其中之一。 使用mysqli_num_rows您將要求 MySQL 從數據庫中檢索所有匹配的記錄,這可能非常耗費資源。 最好將計數記錄的工作委托給 MySQL,然后在 PHP 中獲取返回值,如我的回答所示。

我還建議學習 OOP,它可以使您的代碼更清晰,更易於閱讀。 與 OOP 相同,可以按如下方式進行:

$sql = "SELECT COUNT(*) FROM news";
$count = $con->query($sql)->fetch_row()[0];
echo $count;

如果您的查詢使用變量,那么您可以做類似的事情,但使用准備好的語句。

$sql = "SELECT COUNT(*) FROM news WHERE category=?";
$stmt = $con->prepare($sql);
$stmt->bind_param('s', $category);
$stmt->execute();
$count = $stmt->get_result()->fetch_row()[0];
echo $count;

最好使用 COUNT(*) 而不是選擇所有行並使用mysqli_num_rows()

您的基本想法是正確的,您只需要正確獲取結果即可。

$sql = "SELECT COUNT(*) FROM news";
$count = 0;
if ($result = mysqli_query($con, $sql)) {
    $row = mysqli_fetch_row($result);
    $count = $row[0];
}
echo $count;

下面的PHP可以用來執行查詢計算結果量:

$sql="SELECT COUNT(*) AS news_count FROM news";
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_array($result);
$count = $row['news_count'];
echo $count;

暫無
暫無

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

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