PHP Obtener resultados de Mysql con PDO
- Configurar una base de datos
-
Obtener resultados con
pdostatement.fetchall()
en PHP - Obtenga resultados iterando sobre la declaración PDO en PHP
-
Obtener resultados con el método PDO
fetch()
en PHP -
Resultados del preprocesamiento del método PDO
fetch()
PHP PDO le permite trabajar con múltiples bases de datos a través de una interfaz uniforme. Simplifica las operaciones rutinarias de la base de datos, como la obtención de resultados.
Este tutorial explicará cómo obtener múltiples resultados devueltos por una declaración PDO. Utilizará PDOStatement.fetchAll
, Array Iteration y el método fetch()
en un bucle while
.
Configurar una base de datos
Para este tutorial, necesitará una base de datos MySQL para seguirlo. Descargar e instalar el servidor XAMPP. Inicie el panel de control de XAMPP e inicie sesión en el shell de MySQL.
# This login command assumes that the
# password is empty and the user is "root"
mysql -u root -p
Use la siguiente consulta SQL para crear una base de datos llamada fruit_db
.
CREATE database fruit_db;
Producción :
Query OK, 1 row affected (0.001 sec)
Para crear datos de muestra con los que pueda trabajar, ejecute el siguiente SQL en la base de datos fruit_db
:
CREATE TABLE fruit
(id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
color VARCHAR(20) NOT NULL,
PRIMARY KEY (id))
ENGINE = InnoDB;
Producción :
Query OK, 0 rows affected (0.028 sec)
Confirme que las tablas existen con lo siguiente:
DESC fruit;
Producción :
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | | NULL | |
| color | varchar(20) | NO | | NULL | |
+-------+-------------+------+-----+---------+----------------+
Una vez que la tabla esté configurada, use el siguiente SQL para insertar datos de muestra:
INSERT INTO fruit (id, name, color) VALUES (NULL, 'Banana', 'Yellow'), (NULL, 'Pineapple', 'Green')
Confirme la existencia de datos con el siguiente SQL:
SELECT * FROM fruit;
Producción :
+----+-----------+--------+
| id | name | color |
+----+-----------+--------+
| 1 | Banana | Yellow |
| 2 | Pineapple | Green |
+----+-----------+--------+
Ahora, puede obtener el resultado de PHP.
Obtener resultados con pdostatement.fetchall()
en PHP
Antes de que pueda obtener resultados con PDOStament.fetchAll()
, deberá conectarse a la base de datos que creó anteriormente. Cree un archivo llamado config.php
, y coloque el siguiente código; si el nombre de usuario y la contraseña de su base de datos son diferentes, reemplácelos.
<?php
# If necessary, replace the values for the
# user and password variables
$host = 'localhost';
$database = 'fruit_db';
$user = 'root';
$password = '';
?>
Cuando desee obtener el resultado de la base de datos en un archivo, debe importar el config.php
.
Crea otro archivo llamado fetchpdo.php
. En el archivo, hará lo siguiente:
-
Conectarse a la base de datos.
-
Crear una nueva conexión PDO.
-
Crear una sentencia SQL preparada con el método
prepare()
. -
Ejecutar la sentencia.
-
Obtener el resultado con el método
fetchAll()
.
Ahora, escribe el siguiente código en fetchpdo.php
.
<?php
// Require the config file. It contains
// the database connection
require ('config.php');
// Create a connection string
$database_connection = "mysql:host=$host;dbname=$database;charset=UTF8";
// Create a new PDO instance
$pdo = new PDO($database_connection, $user, $password);
// Prepare a SQL statement
$statement = $pdo->prepare('SELECT name, color FROM fruit');
// Execute the statement
$statement->execute();
// Fetch the results
print("Fetch the result set:\n");
$result = $statement->fetchAll(\PDO::FETCH_ASSOC);
print "<pre>";
print_r($result);
print "</pre>";
?>
Producción :
Array
(
[0] => Array
(
[name] => Banana
[color] => Yellow
)
[1] => Array
(
[name] => Pineapple
[color] => Green
)
)
Obtenga resultados iterando sobre la declaración PDO en PHP
Una vez que ejecuta la declaración preparada de SQL, puede iterar sobre el resultado con un bucle while. Encontrará detalles en el siguiente bloque de código.
<?php
// Require the config file. It contains
// the database connection
require ('config.php');
// Create a connection string
$database_connection = "mysql:host=$host;dbname=$database;charset=UTF8";
// Create a new PDO instance
$pdo = new PDO($database_connection, $user, $password);
// Prepare a SQL statement
$statement = $pdo->prepare('SELECT name, color FROM fruit');
// Execute the statement
$statement->execute(array());
// Iterate over the array
foreach($statement as $row) {
echo $row['name'] . "<br />";
}
?>
Producción :
Banana
Pineapple
Obtener resultados con el método PDO fetch()
en PHP
El método fetch()
obtendrá la siguiente fila de un resultado. Te permite usarlo en un bucle while
.
Los detalles están en el siguiente bloque de código.
<?php
// Require the config file. It contains
// the database connection
require ('config.php');
// Create a connection string
$database_connection = "mysql:host=$host;dbname=$database;charset=UTF8";
// Create a new PDO instance
$pdo = new PDO($database_connection, $user, $password);
// Prepare a SQL statement
$statement = $pdo->prepare('SELECT name, color FROM fruit');
// Execute the statement
$statement->execute(array());
// Use while loop over the array
while ($row = $statement->fetch()) {
echo $row['name'] . "<br />";
}
?>
Resultados del preprocesamiento del método PDO fetch()
Si prefiere preprocesar los datos de la base de datos, puede usar el bucle while
. Luego almacene los resultados procesados en un array. El siguiente código le muestra cómo hacer esto.
<?php
// Require the config file. It contains
// the database connection
require ('config.php');
// Create a connection string
$database_connection = "mysql:host=$host;dbname=$database;charset=UTF8";
// Create a new PDO instance
$pdo = new PDO($database_connection, $user, $password);
// Create an empty array to store the results
$result = [];
// Prepare a SQL statement
$statement = $pdo->prepare('SELECT name, color FROM fruit');
// Execute the statement
$statement->execute(array());
// Iterate over the result and assign
// new names to the table rows
while ($row = $statement->fetch()) {
$result[] = [
'Fruit Name' => $row['name'],
'Fruit Color' => $row['color'],
];
}
print "<pre>";
print_r($result);
print "</pre>";
?>
Producción :
Array
(
[0] => Array
(
[Fruit Name] => Banana
[Fruit Color] => Yellow
)
[1] => Array
(
[Fruit Name] => Pineapple
[Fruit Color] => Green
)
)
Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.
LinkedIn