Llevo 2 meses estudiando PHP como mi primer lenguaje de scripting. Para la mayoría de mis problemas, puedo encontrar fácilmente una respuesta en línea, pero hay algo acerca de PDO que no puedo entender.Cómo se establece un resultado de PDO almacenado
Con el fin de recuperar datos de una base de datos instanciar un nuevo objeto de la clase PDO y llamar al método PDO :: query() en él. Esto devuelve un objeto PDOStatement que lleva el conjunto de resultados de la consulta SQL. Aquí es donde comienza el problema. Parece que no puedo entender cómo y dónde se almacenan los datos del conjunto de resultados.
En el Manual de PHP, aprendí a mostrar las filas devueltas por iterando sobre el objeto PDOStatement con un bucle foreach. Sin embargo, el manual de PHP establece claramente que si un objeto se convierte en una matriz, el resultado es una matriz cuyos elementos son las propiedades del objeto . La PDOStatement solo tiene una propiedad - $ queryString - que contiene la cadena de consulta emitida. Entonces ... ¿dónde están almacenados los resultados de la consulta? ¿Y por qué puedo llegar a ellos a través de una matriz con un ciclo foreach, pero no fuera de ella?
// 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'];
Implementa el [ 'Iterator'] (http: // php. net/Iterator), de modo que una llamada de método implícita devuelve los resultados individuales; para que no tengan que estar presentes como propiedades o datos internos. – mario