簡體   English   中英

PHP PDO - Num Rows

[英]PHP PDO - Num Rows

PDO顯然無法計算從select查詢返回的行數( mysqli具有num_rows變量)。

有沒有辦法做到這一點,沒有使用count($results->fetchAll())

根據手冊,有一個PDOStatement->rowCount方法; 但不應該使用(引用)

對於大多數數據庫, PDOStatement::rowCount()不返回受SELECT語句影響的行數。
相反,使用PDO::query()發出帶有與預期SELECT語句相同的謂詞的SELECT COUNT(*)語句,然后使用PDOStatement::fetchColumn()來檢索將返回的行數。
然后,您的應用程序可以執行正確的操作


如果你已經有了一個記錄集,並想知道其中有多少行,你將不得不使用fetch*方法之一獲取數據; 並使用計數 - 就像你建議的那樣。

雖然PDO顯然有辦法計算從mysql的select查詢返回的行數,但更重要的是首先沒有使用這樣的函數。

每次你有想法使用rowCount()進行SELECT查詢時,它將是多余的甚至是有害的。 請參閱PDO rowCount()

  • 如果您已經選擇了數據,則此功能是多余的,因為您只需計算數據
  • 如果你想使用這個函數來獲取計數,它會有害,因為你永遠不應該選擇數據來計算它。 選擇僅計數,使用SELECT count(*)代替。

另一個選項可能更接近mysqlinum_rows變量和相應的C API函數mysql_num_rows() 是使用MySQL函數FOUND_ROWS()返回相同的信息,而不必再次計算結果中的所有記錄。

例:

$pdoDB->query('SELECT FOUND_ROWS()')->fetchColumn()

最簡單的

  $stmt = $datalink->query('SELECT * FROM projects');
  $rows = $stmt->fetchAll();
  $num_rows = count($rows);
  echo $num_rows ;

暫無
暫無

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

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