En esta ocasión seguiremos viendo otra de las ventajas de porque deberíamos usar la librería PDO para hacer nuestras conexiones a la BD.
Fluent PDO es una pequeña librería para PHP que te permite construir queries de forma rápida, además de que disminuye la cantidad de errores que podríamos cometer al escribir sintaxis SQL.
Los enlaces para descargar los archivos utilizados en este tutorial son:

Fluent PDO: https://github.com/envms/fluentpdo

Esta práctica: https://bitbucket.org/hoclabs/blog/src

CONEXIÓN
[php]
require('FluentPDO/FluentPDO.php');
try {
    $pdo = new PDO("mysql:host=localhost;dbname=blog", "usuario", "contraseña");
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    $pdo->exec("set charset utf8");

    $fluent = new FluentPDO($pdo);
} catch (PDOException $e) {
    echo "Error al conectar la base de datos" . $e->getMessage();
[/php]
CONSULTAS
[php]try {
Para hacer un select debemos utilizar el método ‘from()’
Esta consulta equivale a: ‘SELECT * FROM usuarios’
$query = $fluent->from(‘usuarios’);
echo ‘<pre>’;
foreach ($query as $row) {
echo ‘Nombre: ‘ . $row[‘nombre’] . ‘, Fecha registro: ‘ . $row[‘fecha_registro’] . ‘<br>’;
}
echo ‘<hr>’;

Si quisieramos seleccionar campos especificos de busqueda debemos pasar como parámetro un array
$query = $fluent->from(‘usuarios’)->select(array(‘id, nombre’));
foreach ($query as $row) {

echo ‘ID: ‘ . $row[‘id’] . ‘ Nombre: ‘ . $row[‘nombre’] . ‘<br>’;
}
echo ‘<hr>’;

Si queremos añadir un WHERE a nuestra consulta utilizamos el método WHERE()
$query = $fluent->from(‘usuarios’)->select(array(‘id, nombre, fecha_registro’))->where(‘id’, 2);
foreach ($query as $row) {
echo ‘ID: ‘ . $row[‘id’] . ‘ Nombre: ‘ . $row[‘nombre’] . ‘Fecha registro: ‘ . $row[‘fecha_registro’] . ‘<br>’;
}
echo ‘<hr>’;

Si además deseamos poner un limite a nuestra consulta usamos el método limit()
$query = $fluent->from(‘usuarios’)->select(array(‘id, nombre, fecha_registro’))->limit(4);
foreach ($query as $row) {
echo ‘ID: ‘ . $row[‘id’] . ‘ Nombre: ‘ . $row[‘nombre’] . ‘ Fecha registro: ‘ . $row[‘fecha_registro’] . ‘<br>’;
}

echo ‘</pre><hr>’;
} catch (PDOException $e) {
die($e->getMessage());
}[/php]

INSERCIONES
[php]
<?php
try {
    Para hacer una inserción debemos utilizar el método 'insertInto', además debemos definir un array asociativo el cual contendrá el campo y el valor que se escribirá en dicho campo
    $values = array('nombre' => 'Jose Castillo');
    $query = $fluent->insertInto('usuarios')->values($values);

    También podemos usar el shortcut, los dos hacen lo mismo
    $query = $fluent->insertInto('usuarios', $values);

    A diferencia de un select, en la inserción debemos llamar el metodo 'execute()' y guardamos la respuesta obtenida
    $insertado = $query->execute();

    El valor que retorna la inserción es el id de la fila recien insertada, así validamos la ejecución
    var_dump($insertado);
} catch (PDOException $e) {
    die($e->getMessage());
}
[/php]
ACTUALIZACIONES
[php]
try {

    //Mostramos el registro #1:
    $select = $fluent->from('usuarios')->where('id', 1)->fetch();
    echo 'Nombre: ' . $select['nombre'] . ' Fecha registro: ' . $select['fecha_registro'];

    //Definimos nuestro arreglo con los paramétros a modificar
    $values = array('fecha_registro' => date("Y-m-d H:i:s"));

    //Ejecutamos la actualización y almacenamos el resultado en $update
    $update = $fluent->update('usuarios')->set($values)->where('id', 1)->execute();
    
    //Si la actualización fue correcta se almacenara el valor de las filas que se meodificaron
    if ($update) {
        var_dump($update);
        echo "<p>Después de actualizar: </p>";
        $select = $fluent->from('usuarios')->where('id', 1)->fetch();
        echo 'Nombre: ' . $select['nombre'] . ' Fecha registro: ' . $select['fecha_registro'];
    } else {
        echo 'El nombre no fue actualizado';
    }

} catch (PDOException $e) {
    die($e->getMessage());
}
[/php]
Las tablas utilizadas se encuentran en el archivo blog.sql dentro de la carpeta del proyecto, al principio de la publicación están los enlaces de descarga.

Leave a Reply