我已經學習了PHP 2個月,現在是我的第一個腳本語言。對於我的大部分問題,我都可以在網上輕鬆找到答案,但有一些關於PDO的東西似乎無法理解。如何存儲PDO結果集
爲了從數據庫中檢索數據,我實例化了一個PDO類的新對象,並對其調用了PDO :: query()方法。這將返回一個PDOStatement對象,它攜帶來自SQL查詢的結果集。這是問題的起點。我似乎無法理解結果集中數據的存儲方式和位置。
在PHP手冊中,我學會了通過通過foreach循環遍歷PDOStatement對象來顯示返回的行。但是,PHP手冊明確指出,如果將對象轉換爲數組,則結果爲數組,其元素爲對象的屬性。 PDOStatement只有一個屬性 - $ queryString - 包含發出的查詢字符串。那麼...查詢結果存儲在哪裏?爲什麼我可以通過一個foreach循環的數組來訪問它們,但不能在它之外?
// Instantiate new PDO object to establish a new connection with MySQL database
$db = new PDO('mysql:dbhost=localhost;dbname=world', 'root', 'secret');
// Execute SQL query - Returns a PDOStatement object
$result = $db->query("SELECT Name, Continent, Population FROM Country");
// Result set can be accessed with a foreach loop iterating over the PDOStatement object
foreach ($result as $row) {
echo "$row[Name] - $row[Continent] - $row[Population] <br />";
}
// Outside the foreach loop, $result cannot be accessed this way.
// This produces 'Cannot use object of type PDOStatement as array'
echo $result[0]['Name'];
它實現了['Iterator'](HTTP:// PHP。 net/Iterator)接口,以便隱式方法調用返回單個結果;因此它們不必作爲屬性或內部數據存在。 – mario