PDO顯然無法計算從select查詢返回的行數(mysqli
有num_rows
變量)。PHP PDO - Num Rows
有沒有辦法做到這一點,短缺使用count($results->fetchAll())
?
PDO顯然無法計算從select查詢返回的行數(mysqli
有num_rows
變量)。PHP PDO - Num Rows
有沒有辦法做到這一點,短缺使用count($results->fetchAll())
?
根據手冊,有一個PDOStatement->rowCount
方法;但它不應該被用來(引用):
對於大多數數據庫,
PDOStatement::rowCount()
確實受到 一個SELECT
語句行不 回數。
相反,使用PDO::query()
發出SELECT COUNT(*)
語句相同 謂詞爲您的預期SELECT
語句,然後使用PDOStatement::fetchColumn()
到 檢索將 返回的行數。
然後您的應用程序可以 執行正確的操作。
如果你已經有一個記錄,想知道有多少行是它,你就必須獲取數據,使用的fetch*
方法之一;並使用計數 - 就像你所建議的那樣。
另一個選項可能更接近num_rows
變量mysqli
和相應的C API函數mysql_num_rows()
。是使用MySQL函數FOUND_ROWS()
返回相同的信息,而不必再次計算結果中的所有記錄。
例子:
$pdoDB->query('SELECT FOUND_ROWS()')->fetchColumn()
這個答案現在沒有意義,因爲你可以有規律的計數 – 2014-04-04 08:10:32
雖然PDO顯然有各種手段來算從MySQL的選擇查詢返回的行數,更重要的是,有沒有對這樣的功能使用第一個地方。
每當您有一個想法將rowCount()用於SELECT查詢時,它可能是多餘的,甚至是有害的。見PDO rowCount():萬一
你甚至讀過這個問題的接受答案嗎?根據PDO的文檔:「如果由關聯的PDOStatement執行的最後一條SQL語句是SELECT語句,某些數據庫可能會返回該語句返回的行數。但是,對於所有數據庫,並不能保證這種行爲,因此不應該依賴便攜式應用程序「。 – Ian 2014-04-05 14:05:36
那麼,如果您要求使用便攜式應用程序,那麼不要用mysql標記您的問題。 – 2014-04-05 14:11:22
我該如何去計算呢?我以後在HTML文檔中使用PHP MySQL查詢來顯示數據庫中的數據,但是我想要顯示計數的元素來自提取和顯示數據之前? – Anthony 2017-10-22 22:21:10
可能的重複http://stackoverflow.com/questions/460010/work-around-for-php5s-pdo-rowcount-mysql-issue - 這個問題和你的一樣。接受的答案就是你想要的。 – zombat 2010-04-23 17:34:31
我看到了這個問題,但答案很糟糕。對數據庫運行第二個查詢以查看現在存儲在記錄集中的行數是非常愚蠢的。 – Ian 2010-04-23 18:57:15