PDO es una clase incorporada en PHP que sirve para facilitar la conexión y operaciones con la base de datos, con PDO es posible manipular diferentes motores de bases de datos.
PDO es el acronimo a PHP Data Objects u Objetos de Datos PHP y sirve como un intermediario entre PHP y las base de datos algo muy similar a mysqli.
La gran diferencia entre PDO y mysqli es que PDO soporta también postgresql, oracle, sqlite… y mysqli solo soporta MySQL, pero hay funciones avanzadas y nuevas de MySQL que solo se pueden usar con mysqli.
Vídeo demostrativo
El siguiente vídeo se muestra la instalación y funcionamiento de todo el código que les explico en este articulo.
Les invito a que se suscriban a mi canal de Youtube https://www.youtube.com/user/evilnapsis y nos ayuden a llegar a mas personas. Continuamente estamos subiendo nuevos vídeos con explicaciones, ejemplos y demostraciones.
Base de datos de ejemplo
Vamos a usar una base de datos de ejemplo, es una base de contactos.
create database contacts;
use contacts;
create table person(
id int not null auto_increment primary key,
name varchar(255),
lastname varchar(255),
phone varchar(255),
address varchar(255),
email varchar(255),
created_at datetime
);
Con esta base de datos de una tabla vamos a seguir todo el articulo, como pueden ver es un ejemplo que ya hemos manejado muchas veces.
Esta base de datos la debemos cargar a mysql.
Conexion a la base de datos
Para conectarnos a la base de datos ya usaremos PDO.
$user="root";
$password = "";
$con = new PDO("mysql:host=localhost;dbname=contacts",$user, $password);
Así creamos una conexión PDO, la base de datos se llama contacts la pasamos como parámetro dbname, también es necesario el usuario y password.
Nota: En los ejemplos siguientes se va a omitir la conexion, este codigo lo debes copiar/pegar en las secciones donde dice: INSERTAR CONEXION AQUI.
Una vez que ya tenemos la conexión realizada ahora podemos proseguir con las operaciones CRUD: Create, Retrieve/ Read, Update, Delete.
Create: Insertar datos
Ahora vamos a crear o insertar datos a la base de datos. Este archivo se llama insertar.php
/** INSERTAR CONEXION AQUI **/
$query = $con->prepare("insert into person (name,lastname, phone, address, email, created_at) values (?, ?,?,?,?,NOW())");
$name = "Agustin";
$lastname = "Ramos";
$phone = "+5219371331142";
$address = "Mexico";
$email = "evilnapsis@gmail.com";
$result = $query->execute([$name, $lastname, $phone, $address, $email]);
if($result){ echo "Correcto"; }
else{ echo "Error!"; }
Las primeras lineas corresponden a la conexión, después tenemos una función “prepare” donde agregamos la consulta SQL y los valores a insertar pondremos símbolos de interrogación (?).
Después vamos insertar los valores usando $query->execute([]) donde vamos a ingresar los valores en el orden de los simbolos de interrogación (?) que usamos en la función “prepare”.
Retrieve / Read: Seleccionar datos
Ahora vamos a leer los datos, en base de datos se usa el comando “select”. Este es el archivo index.php
<?php | |
$user="root"; | |
$password = ""; | |
$con = new PDO("mysql:host=localhost;dbname=contacts",$user, $password); | |
$query = $con->query("select * from person;"); | |
$result = $query->fetchAll(PDO::FETCH_OBJ); | |
echo "<h1>Todos los contactos</h1>"; | |
echo "<a href=\"insertar.php\">Insertar</a><br><br>"; | |
echo "<table border=1>"; | |
foreach($result as $r){ | |
echo "<tr>"; | |
echo "<td>".$r->name."</td>"; | |
echo "<td>".$r->lastname."</td>"; | |
echo "<td>".$r->phone."</td>"; | |
echo "<td>".$r->address."</td>"; | |
echo "<td>".$r->email."</td>"; | |
echo "<td><a href=\"actualizar.php?id=".$r->id."\">Actualizar</a></td>"; | |
echo "<td><a href=\"eliminar.php?id=".$r->id."\">Eliminar</a></td>"; | |
echo "</tr>"; | |
} | |
echo "</table>"; | |
?> |
Aqui lo que hacemos es ejecutar una consulta “select * from person” usando la función query, después con la función fetchAll obtenemos los resultados en un objeto que vamos a recorrer despues.
En el ciclo donde recorremos los datos vamos a dibujar una tabla con los datos, también agregamos 2 campos con enlaces para las funciones de eliminar.php y actualizar.php.
Update: Actualizar los datos
Para actualizar los datos usaremos la consulta “update”. El siguiente archivo es actualizar.php
/** INSERTAR CONEXION AQUI **/
$query = $con->prepare("update person set name=?,lastname=?, phone=?, address=?, email=? where id=?");
$id=$_GET["id"];
$name = "Agustin 123";
$lastname = "Ramos 123";
$phone = "+5219371331142 XXX";
$address = "Tabasco, Mexico";
$email = "evilnapsis@gmail.com 123";
$result = $query->execute([$name, $lastname, $phone, $address, $email, $id]);
if($result){ echo "Correcto"; }
else{ echo "Error!"; }
Para actualizar datos de 1 elemento siempre vamos a necesitar el ID o algún dato de identificación, por ello enviamos el ID desde el archivo index.php.
Aqui no usamos un formulario para ingresar los datos actualizados, en su lugar colocamos datos predefinidos, asi que al actualizar cualquier elemento el resultado sera el mismo.
Esto solo lo hicimos como ejemplo.
/** INSERTAR CONEXION AQUI **/
$query = $con->prepare("delete from person where id=?");
$id = $_GET["id"];
$result = $query->execute([$id]);
if($result){ echo "Correcto"; }
else{ echo "Error!"; }
Delete: Eliminar datos
Por ultimo, pero no menos importante vamos a eliminar los datos.
El archivo eliminar.php con tiene el script para eliminar.
/** INSERTAR CONEXION AQUI **/
$query = $con->prepare("delete from person where id=?");
$id = $_GET["id"];
$result = $query->execute([$id]);
if($result){ echo "Correcto"; }
else{ echo "Error!"; }
Fácilmente ejecutamos una consulta “delete from” donde pasamos el ID del elemento y listo.
Descargar
A continuación les dejo un enlace para descargar los códigos del ejemplo:
Link: http://eunsetee.com/11227357/pdocrud1
Después de hacer click debes esperar 5 segundos, después hacer click en la opción “Saltar Publicidad” en el cuadro amarillo en la esquina superior derecha. Gracias por apoyarnos.
Conclusión
Como ya habíamos dicho, la ventaja de PDO es que el mismo controlador o la misma programación nos sirve para diferentes motores de base de datos como Postgresql, oracle o sqlite entre otros, asi que pueden usar este ejemplo para estos otros motores también.