PHP OO: CRUD con la API PDO de PHP Con Sentencias Preparadas

Vea en este artículo como hacer correctamente y paso a paso las operaciones CRUD con el API PDO de PHP.
Compartir:

Haciendo CRUD con PHP PDO

Para muchos se les ha hecho un poco dificultoso trabajar con la API PDO de PHP, para esto pues voy  a mostrarle detalladamente el proceso de hacer operaciones CRUD (Create, Read, Update y Delete "Crear, leer, actualizar y eliminar"), con este poderoso y muy usado API de PHP.
La API PDO (PHP Data Objects) define una interface de conexión a una base de datos, bastante leve y consistente para PHP.
Existe con esto la posibilidade de utilizar diversos drivers de conexión que implementen la interfaz de PDO para varios tipos de Bases de Datos.
Como PDO representa una camada de abstracción de acceso a los datos, entonces las mismas funciones que son utilizadas para manipular datos o recuperar informaciones de la base de datos, pues serán las mismas, independientemente de la base de datos que se esté usando. Sin más, comencemos:

Primer Paso: Para hacer efectivo la ejecución de nuestro Artículo, crearemos una base de datos llamada 'CrudConPDO',

  • Entonces desde nuestro Gestor de Base de Datos 'phpMyAdmin', crearemos la base de datos llamada 'CrudConPDO':


  • Creamos ahora la Tabla llamada "miTabla" como indica la figura, esta tiene 3 campos para colocar nuestros registros:
    • id
    • nombre
    • objeto
  • Esta Tabla la crearemos con la siguiente consulta:

CREATE TABLE miTabla
(
id int NOT NULL AUTO_INCREMENT,
nombre varchar(50) NOT NULL,
objeto varchar(50),
PRIMARY KEY (ID)
)

  • Pegando la consulta en el respectivo lugar de consultas de nuestro Gestor phpMyAdmin:


  • Ahora es solo presionar el botón guardar para ejecutar este evento! 

Segundo Paso: Insert con PDO de PHP
  • Yo particularmente estoy trabajando con Wamp (obvio ustedes pueden trabajar con Xamp, Mamp, etc), entonces voy a crear una carpeta dentro de mi carpeta de proyectos para Wamp, osea "www"; en caso de que uds usen Xamp será "htdocs".
    • Mi carpeta de Proyecto se llamará 'CrudConPDO', que la colocaré como ya dije dentro de www, y pues ahora es momento de crear mi primero archivo llamado insertar.php, imagino que ya tienen una idea de qué colocaré dentro de él no?

Archivo: insertar.php

<?php
$servidor = "localhost";
$usuario = "root";
$contrasenia = "****";
$basededatos = "CrudConPDO";

try {
    $conexion = new PDO("mysql:host=$servidor;dbname=$basededatos", $usuario, $contrasenia);
    // Configurando la información de errores PDO
    $conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    //haciendo la consulta 
    //usando Sentencias Preparadas 'Prepared Statement'
    $sentencia = $conexion->prepare ("INSERT INTO miTabla (nombre, objeto) VALUES (:nombre, :objeto)");
    //'bindamos' ó enlazamos los registros con bindParam
    $sentencia -> bindParam(':nombre', $nombre);
    $sentencia -> bindParam(':objeto', $objeto);

    //insertando la primera fila
    $nombre = 'numeroUno';
    $objeto = '1';
    $sentencia->execute();
    //insertando la segunda fila
    $nombre = 'numeroDos';
    $objeto = '2';
    $sentencia->execute();

    echo "Nuevos Registros Fueron Ingresados";
    }
//para un try tiene que existir un catch que atrapa las exceptions
catch(PDOException $error)
    {
    echo "El error es: " . $error->getMessage();
    }
//Cerramos la conexion
$conexion = null;
?>

  • Ahora si todo ha sido codificado de forma lógica, entonces tendremos la siguiente respuesta del servidor al ejecutar nuestro archivo 'insertar.php':


  • Ahora podemos confirmar todo esto, retornando a nuestro gestor de base de datos phpMyAdmin para visualizar el ingreso de este registro!


Tercer PasoSelect con PDO de PHP
Es el momento de hacer un Select de nuestros registros. El comando Select desde la consulta a nuestra base de datos, lo que hace es iterar (apuntar cada registro uno a uno), todo esto de forma direccionada desde la consulta a la Base de Datos.
Creamos pues nuestro archivo select.php dentro de la carpeta de nuestro proyecto "CrudConPDO" y le ingresamos el siguiente código:
select.php

<?php
echo "<table style='border: solid 1px black;'>";
echo "<tr><th>Id</th><th>Nombre</th><th>Objeto</th></tr>";

class FilasmiTabla extends RecursiveIteratorIterator { 
    function __construct($esto) { 
        parent::__construct($esto, self::LEAVES_ONLY); 
    }

    function current() {
        return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";
    }

    function beginChildren() { 
        echo "<tr>"; 
    } 

    function endChildren() { 
        echo "</tr>" . "\n";
    } 
} 

$servidor = "localhost";
$usuario = "root";
$contrasenia = "****";
$basededatos = "CrudConPDO";

try {
    $conexion = new PDO("mysql:host=$servidor;dbname=$basededatos", $usuario, $contrasenia);
    $conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    //utilizando Prepared Statements ó sentencias preparadas
    $sentencia = $conexion->prepare("SELECT id, nombre, objeto FROM miTabla"); 
    //ejecutando sentencia
    $sentencia->execute();

    // configurando para que los arrays se obtengan de forma asociativa utilizando PDO::FETCH_ASSOC 
    $resultado = $sentencia->setFetchMode(PDO::FETCH_ASSOC);
    //mediante foreach podemos iterar nuestros registros y como estan asociados (1 - miguel), instanciando a 2 clases
    //FilasmiTabla y RecursiveArrayItertor que es una clase nativa de php que nos permite modificar valores mientras se esta iterando 
    //algun array 
    foreach(new FilasmiTabla(new RecursiveArrayIterator($sentencia->fetchAll())) as $key=>$valor) { 
        echo $valor;
    }
}
catch(PDOException $error) {
    echo "Error: " . $error->getMessage();
}
$conexion = null;
echo "</table>";
?>

  • Si todo pues ha corrido bien, nos deparamos con una pantalla parecida a esta:


Cuarto PasoUpdate con PDO de PHP
Es el momento de hacer un Update de nuestros registros. El comando Update lo que hace es iterar nuestros registros en nuestra tabla, entrar en ellos y modificarlos, todo esto de forma direccionada desde la consulta a la Base de Datos.
Creamos pues nuestro archivo update.php dentro de la carpeta de nuestro proyecto "CrudConPDO" y le ingresamos el siguiente código:
update.php

<?php
$servidor = "localhost";
$usuario = "root";
$contrasenia = "****";
$basededatos = "CrudConPDO";

try {
    $conexion = new PDO("mysql:host=$servidor;dbname=$basededatos", $usuario, $contrasenia);
    // Configurando el PDO Error
    $conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $consulta = "UPDATE miTabla SET nombre='numeroTres', objeto =3 WHERE id=1";
    //trabajando con Prepared Statements ó sentencias preparadas
    // Preparando la declaración
    $sentencia = $conexion->prepare($consulta);

    // ejecutando la query consulta
    $sentencia->execute();

    // mostrando el mensaje de # de registros actualizados satisfactoriamente
    echo $sentencia->rowCount() . " registros Actualizados Satisfactoriamente";
    }
catch(PDOException $error)
    {
    echo "El error sería: <br>" . $error->getMessage();
    }

$conexion = null;
?>

  • Si todo pues ha corrido bien, nos deparamos con una pantalla parecida a esta:


  • Volvemos a nuestro phpMyAdmin para confirmar los cambios en vivo:


Quinto PasoDelete con PDO de PHP
Es el momento de hacer un Delete de nuestros registros. El comando Delete lo que hace es iterar nuestros registros en nuestra tabla y eliminarlos uno a uno, todo esto de forma direccionada desde la consulta a la Base de Datos.
Creamos pues nuestro archivo delete.php dentro de la carpeta de nuestro proyecto "CrudConPDO" y le ingresamos el siguiente código:
delete.php

<?php
$servidor = "localhost";
$usuario = "root";
$contrasenia = "****";
$basededatos = "CrudConPDO";

try {
    $conexion = new PDO("mysql:host=$servidor;dbname=$basededatos", $usuario, $contrasenia);
    // configruando el modo de errores PDO error
    $conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // realizamos la consulta para eliminar registros
    $consulta = "DELETE FROM miTabla WHERE id=1";
    //utilizando prepared Statements o sentencias preparadas
    $sentencia = $conexion->prepare($consulta);
    $sentencia->execute(array(':id' => 1));

    echo "Registros Eliminados Correctamente";
    }
catch(PDOException $error)
    {
    echo $consulta . "<br>" . $error->getMessage();
    }

$conexion = null;
?>

  • Si todo pues ha corrido bien, nos deparamos con una pantalla parecida a esta:
  • Volvemos a nuestro phpMyAdmin para confirmar los cambios en vivo:

Bueno con esto culminamos un artículo muy importante que nos muestra claramente con detalles como es que realizamos un CRUD con el API PDO de PHP.
Compartir:
Localización Gov. Celso Ramos, SC, Brasil

CRUD con PDO

PHP

PHP y MySQL

Déjenos su Comentário:

0 commentários: