我最近開始使用PHP5開發一個新項目,並且希望使用它們的PDO類。問題是MySQL PDO驅動程序不支持rowCount(),因此無法運行查詢,然後獲取受影響的行或返回的行數,這是一個相當大的問題,就我而言。我想知道以前是否有其他人處理過這個問題,以及您爲解決問題所做的工作。必須執行fetch()或fetchAll()來檢查是否有行受到影響或返回,這似乎是對我的一種破解,我寧願只做$ stmt-> numRows()或類似的東西。PHP5的PDO解決方案rowCount MySQL問題
回答
您可以在原始SELECT
查詢後立即發出SELECT FOUND_ROWS()
查詢以獲取行計數。
$pdo->query("SELECT * FROM users");
$foundRows = $pdo->query("SELECT FOUND_ROWS()")->fetchColumn();
有一個問題,rowCount()適用於我,也適用於SELECT語句。自從這個問題得到解答後,這是否已經實施? – Mattis 2011-06-19 16:34:20
@Imran rowCount()也適用於select,也適用於像'SHOW TABLES LIKE'
rowCount()只工作正常,如果你以前執行fetchAll(),但如果你正在使用fetch()(這是更好的原因會消耗更少的內存),那麼不會這樣做。 – itsjavi 2013-07-08 17:16:44
對於那些你誰正在使用MySQL存儲過程,這個解決方案是不是真的可行。我建議你做的是讓你的存儲過程創建兩個行集。第一個將包含一行和一列,包含記錄的數量。第二個將是您將用於獲取該行數的記錄集。
無限的行數可以是具有完全相同的WHERE
子句作爲第二行集一個SELECT COUNT(*)
而不LIMIT
/OFFSET
條款。
另一個想法可能是創建一個臨時表。使用您的SELECT
語句來填充臨時表。那麼你可以使用SELECT COUNT(*) FROM tmpTable
作爲你的第一行,而SELECT * FROM tmpTable
作爲你的第二行。
這個問題是基於幾個錯誤的假設和一個過時的陳述。
首先,不要混淆受影響的和選中的行的數字。即使在09年,PDO也支持前者。
說到SELECT語句返回的行數 - 你只需要這個數字。你擁有的數據就夠了。
是的,現在rowCount()
也支持從mysql中選擇的行數。但是,無論如何,您在平均網絡應用程序中並不需要這個數字。
- 1. Activerecord postgres-mysql問題的解決方案
- 2. Internet Explorer的問題和解決方案
- 3. Magic Number問題的解決方案......?
- 4. HEAD請求問題的解決方案
- 5. WinRT中的解決方案問題
- 6. Visual Studio 2005解決方案的問題
- 7. 帶fetch_field_direct(),getColumnMeta()的Rowcount解決方案;可移植性到PHP 7?
- 8. 在MySQL解決方案
- 9. Mysql查詢解決方案
- 10. mysql死鎖解決方案〜
- 11. 解決方案在MySQL
- 12. MySQL注入解決方案
- 13. Visual Studio 2010解決方案問題
- 14. .Net解決方案或IDE問題
- 15. MVC3解決方案log4net構建問題
- 16. onClickListener問題找不到解決方案
- 17. 應用程序解決方案問題
- 18. 二次公式解決方案問題
- 19. SAML DNS解決方案問題
- 20. 河內解決方案問題
- 21. 備份軟件解決方案問題
- 22. 解決語法問題的實用解決方案
- 23. 一種解決方案會導致無關問題的解決?
- 24. 需要針對問題null問題的解決方案
- 25. Android虛擬設備的IntelliJ問題解決方案問題
- 26. PHP5 MySql和PDO異常
- 27. Mysql/PDO問題
- 28. MySQL的透視或Excel解決方案
- 29. MySQL查詢的解決方案
- 30. 解決二叉平方優化問題的最佳解決方案是什麼?
這似乎不是PHP 5.4中的問題。有人可以確認嗎? – David 2013-03-04 19:24:15