私は最初のスクリプト言語として2ヶ月間PHPを勉強してきました。ほとんどの私の問題については、簡単にオンラインで回答を見つけることができますが、PDOについては理解できないようなものがあります。PDO結果セットの保存方法
データベースからデータを取得するために、PDOクラスの新しいオブジェクトをインスタンス化し、そのオブジェクトに対してPDO :: query()メソッドを呼び出します。これは、SQL照会から結果セットを運ぶPDOStatementオブジェクトを戻します。ここで問題が始まります。私は結果セットのデータがどこにどこに格納されているのか分からないようです。
PHPマニュアルでは、返された行をで表示することを学びました。これは、foreachループを使ってPDOStatementオブジェクトを反復処理することです。しかし、PHPマニュアルには、オブジェクトが配列に変換された場合、結果は配列の要素がのオブジェクトのプロパティであることが明示されています。 PDOStatementは - $ queryString - 発行されたクエリ文字列を含むの1つのプロパティしか持っていません。だから...クエリ結果はどこに保存されていますか?そして、なぜ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'];
と等価です。 net/Iterator)インタフェースを使用して、暗黙のメソッド呼び出しが個々の結果を返すようにします。プロパティや内部データとして存在する必要はありません。 – mario