Conectar SQlite con PHP


Hola a todos nuevamente, hoy comentaré el codigo que he hecho, muy pequeño pero muy eficiente para pasar datos a una base de datos SQLite; como les había comentado, ando desarrollando mis habilidades con android y las bases de datos locales con esta plataforma son las indiscutibles, después de las peticiones HTTPS para uso constante de datos, asi que para empezar he hecho algo con una base de datos embebida en forma local. Pasando al código estuve observando que la correcta manipulación con estas bases de datos ahora es mucho mas estable con PDO a diferencia de las conexiones normales sqlite_open(), asi que para poder cargar un link «resource» para manipulación de datos quedaría de la siguiente forma:

try{
    /*** SQLite conexion  ***/
    $dbhandler = new PDO("sqlite:himnario.sqlite");
    echo "Handle creado ......";
}
catch(PDOException $e){
    echo $e->getMessage();
    echo "Base de datos no ha sido enlazada correctamente ...";
    die( "Consultas cerradas !!! $error");
}
echo "Base de datos enlazada correctamente ....";

Hasta aquí si la ultima línea es mostrada ¡éxito!; todo ha salido correctamente, ¿Pero?… ¿Cómo manipulados los datos?. Muy bien; hay dos formas de hacerlo usando «exec» ó «query»; bien,  la diferencia entre estos dos parámetros es que el primero ejecuta la consulta sin devolver información a excepción de las filas afectadas, es recomendable usar «exec» para INSERT, DELETE ó UPDATE y «query» es mejor para peticiones de datos mejor dicho SELECT.

$query = "select * from tabla";
foreach($dbhandler->query($query) as $row){
    echo $row[0]; //muestra el primer campo de cada registro
}

— Usando el parametro Exec() —

$query = "insert into tabla(columna1,columna2) values('campo1','campo2')";
//insertamos los datos, usamos excec porque no devolvera un resultado en caso contrario
$dbhandler->exec($query);

Y así podemos hacer operaciones básicas con sqlite y php, disfruten programando y experimentando con sus líneas de código.

Happy Codding!!! 🙂


Un Comentario

    • Hola Mauricio, contestando a tu pregunta, la seleccion de la base de datos ya esta hecha desde que indicas el nombre del archivo en la clase PDO; en mi caso la base de datos, el nombre de la base de datos «himnario.sqlite», $dbhandler = new PDO(«sqlite:himnario.sqlite»); esta línea equivale a hacer a mysql_connect y mysql_selectdb respectivamene, para SQLite se entiende que el nombre del archivo de la base de datos, tambien es el nombre de la base de datos, solo tienes que hacer la conexion al archivo y podras accesar directamente a las tablas.

      Observación: SQLite permite instanciar solo una base de datos por archivo, si vas a crear otra base deberas crear otro archivo.

      La variable $dbhandler se convertira en una clase PDO (PHP Data Objects – Obtención de Datos PHP) para todas las operaciones, en simples palabras es un todo en uno; solo requieres de esas dos funciones query() y excec() como se ve en el codigo de ejemplo de la publicación, si tu usas un editor completo de php no te apareceran las propiedades y elementos de la clase porque estas delegando una clase que provee el mismo PHP y el editor no tiene el folding y la documentación para hacer el autocompletado, saludos y espero haber contestado correctamente a tu pregunta.

    • Aunque es interesante lo que comentas, las bases sqlite están diseñadas para ser locales, lo que se me ocurre en ese caso es crear un servicio REST para poder hacer las operaciones con la base de forma remota.

  1. Buenas, al colocar tu codigo me parece el siguiente error:

    Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\juegos\minas\php\index.php on line 25

    Gracias de antemano

    • Hola, disculpa la demora, cuando te muestra ese error no es porque haya un error en la base de datos, puede ser que no haya resultados en la consulta, esto ocasiona que tire este error, tambien puede ser que la variable a la que estas asignando el resultado de la consulta haya devuelto un valor «null» o vacío, el codigo esta completo en el post, si vas a hacer algunas pruebas con el codigo asegurate que enlazar tu base datos en la variable «$dbhandler» y que la sentencia sql en «$query«, además de que en la tabla exista al menos 1 fila de datos. Saludos.


Deja un comentario