Created
August 9, 2017 06:18
-
-
Save phpfiddle/a135bd0b068f3bf8523fe86f15cb01ff to your computer and use it in GitHub Desktop.
[ Posted by Alfertson Cedano ] PDO query sin consultas preparadas
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* | |
* Consulta con PDO mediante query | |
* | |
* Notas: | |
* - Los require indicados solo sirven para este ejemplo | |
* - La consulta SQL y el resultado son sólo para mostrar un ejemplo , | |
* cada uno debe adaptarla a sus necesidades | |
* | |
**/ | |
require_once "dBug!.php"; | |
require "util/public_db_info.php"; | |
/** | |
* | |
* 1. CREAR EL OBJETO DE CONEXIÓN A LA BASE DE DATOS | |
* Creamos una instancia de PDO mediante new | |
* pasando al constructor las credenciales de conexión: | |
* - $dsn: cadena de conexión | |
* - $user_name: nombre de usuario | |
* - $pass_word: contraseña de conexión a la BD | |
* Nota: Este es un ejemplo básico de conexión | |
* se recomienda tener una clase dedicada a la conexión | |
* que sea usada en toda la aplicación | |
* Ejemplo: https://github.com/padrecedano/PHP-PDO | |
* | |
**/ | |
$pdo = new PDO($dsn, $user_name, $pass_word); | |
/** | |
* | |
* 2. ESCRIBIR LA CONSULTA Y ENVIARLA | |
* a) En el caso de consultas que no manejen datos externos tales como criterios WHERE | |
* se pasará la consulta a PDO mediante el método query directamente | |
* b) Si la consulta usa datos externos, se recomienda usar consultas preparadas | |
* enviando por un lado la cadena SQL y por otro los datos para prevenir la Inyección SQL | |
* En este caso se procederá como indicado en a. por ser una consulta que no necesita ser preparada | |
* | |
**/ | |
$sql = "SELECT * FROM books"; | |
$result = $pdo->query($sql); | |
/** | |
* | |
* 3. RECUPERAR EL RESULTADO DE LA CONSULTA | |
* Se crea un array asociativo de los resultados usando fechtAll-> y se almacena en $arrDatos | |
* Hay varios métodos para recuperar y leer los datos, ver al respecto la documentación. | |
* En este caso almacenamos los resultados en una variable usando el método fetchAll, | |
* indicándole que queremos un array asociativo | |
* | |
**/ | |
$arrDatos = $result->fetchAll(PDO::FETCH_ASSOC); | |
/** | |
* | |
* 4. VERIFICAR EL RESULTADO DE LA CONSULTA Y LEERLO | |
* Es importante señalar que en PDO, para verificar si hay valores | |
* usar rowCount() no es la práctica recomendada, porque esto se puede hacer | |
* verificando los datos mismos, ya que si no hay valores, el objeto devuelto por la consulta será FALSE | |
* por tanto, con verificar el valor de $arrDatos será suficiente | |
* | |
**/ | |
if ($arrDatos) | |
{ | |
/** | |
* | |
* 5. MOSTRAR LOS DATOS EN PANTALLA | |
* Si hay datos, construiremos una sola variable a la cual le iremos concatenando | |
* los diferentes valores contenido en el conjunto de resultados | |
* Nótese que hay elementos que se crean fuera del bucle y otros dentro | |
* la lógica de dicho procedimiento se sobre-entiende :) | |
* | |
**/ | |
$strHtml="<table border='1'>"; | |
$strHtml.= "<th>ID</th><th>TÍTULO</th>"; | |
$strHtml.="<tbody>"; | |
foreach ($arrDatos as $row) | |
{ | |
$strHtml.= "<tr>"; | |
$strHtml.= "<td>".$row["id"]."</td>"; | |
$strHtml.= "<td>".$row["title"]."</td>"; | |
$strHtml.= "</tr>"; | |
} | |
$strHtml.="</tbody>"; | |
$strHtml.="</table>"; | |
echo $strHtml; | |
}else{ | |
print_r("No se encontraron datos, verifique su conexión o la consulta enviada"); | |
} | |
/** | |
* | |
* 6. CERRAR RECURSOS | |
* Cerramos el objeto de conexión si el caso lo requiere | |
* En PDO no es obligatorio (ver https://es.stackoverflow.com/a/50097/29967) | |
* | |
**/ | |
$pdo = null; | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment