使用SELECT語句時,PDO可以返回db中的行數嗎?而且,PHP甚至支持命名參數?PDO的侷限性和選擇的語句
回答
以下例如展示瞭如何獲取這是選擇或影響了PDO行:
<?php
$selectsql = $database->prepare('SELECT * FROM table');
$selectsql->execute();
$count = $selectsql->rowCount();
?>
OR
<?php
$selectsql = $database->prepare('SELECT COUNT(*) FROM table');
$selectsql->execute();
?>
至於命名參數
https://wiki.php.net/rfc/namedparameters
命名參數是多年來多次提出的主題。利弊被捕獲在各種電子郵件和 (顯然)該功能尚未獲得支持,並沒有實施。 由於該主題不斷被重新提出,並且現在PHP有一個RFC 進程,所以討論應該記錄在RFC中(請注意,這是尚未完成的 ),因此不必重新訪問相同的參數。
我沒有然而,發現模擬它的一些方法:
我認爲OP是指查詢中的命名佔位符,即'SELECT ... WHERE foo =:foo'。可能錯誤 – Phil
如果由關聯的PDOStatement執行的最後一條SQL語句是SELECT語句,則某些數據庫可能會返回該語句返回的行數。但是,不能保證所有數據庫的這種行爲,並且不應該依賴便攜式應用程序。 - [PDOStatement :: rowCount](http://php.net/manual/en/pdostatement.rowcount.php) – ironcito
我是。行數不總是工作。什麼是替代方案?如果我使用COUNT(),如何使用像mysqli一樣存儲的行數來創建一個變量?我在問什麼是有什麼全面的證明方法來計算行與pdo和選擇語句並存儲計數 – stevenmw
可以使用SELECT staement當PDO返回在DB的行數?
從db中選擇任何數據沒有限制。
PDO可以返回表中的行數以及您希望從數據庫中選擇的任何其他信息。只需選擇它。你會沒有任何問題。就這樣。
當使用MySQL驅動,這些條碼是等同
// using rowcount
$stmt = $pdo->prepare('SELECT * from `foo` WHERE `bar` = :bar');
$stmt->execute(array('bar' => 'bar'));
$count = $stmt->rowCount();
// using a COUNT query
$stmt = $pdo->prepare('SELECT COUNT(1) from `foo` WHERE `bar` = :bar');
$bar = 'bar';
$stmt->bindParam('bar', $bar);
$stmt->execute();
$count = $stmt->fetchColumn();
我已經使用在查詢中指定的佔位符(這是完全可能的)也示出。
的第一塊代碼將最有可能不與其他DBMS,而第二個會的工作。
謝謝你的幫助。 – stevenmw
使用SELECT staement時,PDO是否可以返回db中的行數?
我想象的混亂來自這句話手動莖:
如果由相關PDOStatement對象執行的最後一條SQL語句SELECT語句,有些數據庫返回該返回的行數聲明。但是,不能保證所有數據庫的這種行爲,並且不應該依賴便攜式應用程序。
這是數據庫支持或不支持此功能。當您發出SELECT * FROM foo ...
聲明,你告訴你想要的數據庫,以[根據一些條件]獲得了foo
表中的所有數據。這裏的重點在於數據。數據庫將評估它爲該表提供的所有數據,以回饋給您所要求的內容。這可能會或可能不會得到某些指數的幫助,這可能會或可能不會發生異步,數據庫可能會或可能不會知道它能夠提供多少結果。這一切都取決於數據庫的內部。在某些存儲形式中,數據庫可能根本不知道會有多少結果,直到它實際提取了所有結果。
因此,當你調用PDOStatement::rowCount
,結果可能會或可能不會根據數據庫上準確。 PDO API只是公開數據庫提供的任何內容,並且由於PDO可用於與許多不同的數據庫進行通信,因此其功能取決於您正在與之通話的數據庫。
而且也PHP甚至支持命名的參數?
PHP?!是的,PHP有很多數據庫API,它們支持具有命名參數的參數化查詢。 PDO就在其中。
在青少年時代,PDO也沒有對於MySQL的行數,我相信。你可以在08年的SO上找到一些遺留問題,證明這一點。無論如何,這些功能都是無用功能。 –
夠公平的,這顯然是一個在5.1.6和5.2.2之間存在的bug,並且已經[在五年前修復](http://php.net/ChangeLog-5.php#5.2.2),所以它不再是一個問題。 :) – deceze
- 1. PDO選擇語句
- 2. PDO選擇語句無(FETCH_ASSOC)
- 3. PDO選擇和插入語句
- 4. Sql插入選擇語句PDO
- 5. 使用PDO語句選擇表數據
- 6. PHP PDO選擇語句不起作用
- 7. 使用PDO在選擇語句中選擇多行
- 8. PDO命名參數的侷限性
- 9. 多表選擇語句的性能
- 10. SQL語句選擇語句
- 11. 選擇和計數語句
- 12. MySQL和Python選擇語句
- 13. 選擇語句SQLite和iOS
- 14. PDO爲選擇語句返回錯誤的值
- 15. 選擇語句
- 16. 使用PHP PDO準備的語句和MySQL選擇字段爲空的行
- 17. ID選擇,選擇語句
- 18. PDO MySQL準備語句與可選的語句
- 19. 嵌套和複雜的選擇語句
- 20. 嵌套SQL語句和選擇(MySQL的)
- 21. 選擇語句的特定列總和
- 22. 如何使用pdo的準備好的語句來排序和限制子句?
- 23. Vertica和PDO準備的語句
- 24. PDO,Mysql和本地準備的語句
- 25. 使用%和concat編寫的PDO語句
- 26. MySQL的選擇/ where語句
- 27. IF語句選擇,MySQL的
- 28. 複選框,SQL選擇語句和PHP
- 29. 甲骨文選擇語句性能
- 30. PDO編寫的語句 - NULLs
是雙方quesions。 – ironcito
雖然可以在一般使用['PDOStatement對象:: rowCount時()'](http://php.net/manual/pdostatement.rowcount.php)與MySQL和'SELECT'語句,它是不可移植的。建議您使用相同的謂詞發出「SELECT COUNT(*)」查詢以檢索準確的行數。 – Phil
但這些並不完全證明。 Php.net甚至說行數只是部分時間。 http://php.net/manual/en/pdostatement.rowcount.php這不是一個使用mysqli而不是pdo的情況嗎? – stevenmw