2009-07-07 27 views
8

Sé que PHP 5 ya es compatible con SQLite, pero por alguna razón no puedo hacerlo funcionar.¿Cómo puedo usar y acceder a una base de datos SQLite usando PHP y Wamp Server?

Seguí las instrucciones desde SQLite tutorial: Getting started. También se aseguró de que los siguientes no están comentadas de php.ini:

extension=php_pdo_sqlite.dll 
extension=php_sqlite.dll. 

Pero cuando abro el archivo PHP de localhost usando Firefox, me sale este error:

Fatal error: Class 'SQLiteDatabase' not found.

estoy en Windows por cierto, si esa información es importante.

¿Cuál puede ser la causa de este problema?

Respuesta

8

Creo que la clase SQLiteDatabase es de la extensión sqlite en lugar de pdo_sqlite. Por lo que podría habilitar la extensión sqlite, o usar DOP lugar:

<?php 
$conn = new PDO('sqlite:c:/mydb.sq3'); 
$conn->exec('some sql query'); 
+0

¡Muchas gracias! Creo que pude pasar la apertura del DB porque ahora los errores pertenecen a la consulta. ¡Ahora solo tengo que aprender la sintaxis y todo! ¡Gracias de nuevo! – Jarvis

5

En Windows es necesario tener el siguiente conjunto en su ini:

extension=php_pdo.dll 
extension=php_sqlite.dll 

le recomiendo que lea this page en el manual.

2

Clase SQLiteDatabase es un objeto de sqlite biblioteca, que el apoyo se redujo en PHP 5.4, pero en varios sistemas y configuración podría ser inhabilitado en un versiones anteriores, ya que esta biblioteca era mucho tiempo marcado como va a ser obsoleta.

Biblioteca php_sqlite.dll (Windows) o php_sqlite.so (Linux) ya no se admite en las últimas versiones de PHP y se sustituyó por php_sqlite3.dll o php_sqlite3.so respectivamente.

Puede:

  1. tratar de encontrar php_sqlite.dll (php_sqlite.so) en algún lugar de Internet. Los enlaces como this o this pueden ser útiles para usted. Sin embargo, usted tiene que coincidir con cuidado edad archivo de biblioteca SQLite a la plataforma de tu PHP (x64 o x86), la construcción del motor (VC6, VC9 o VC11), versión (5.x) y tipo (TS para seguro para subprocesos o NTS para no seguro para hilos). Esta podría ser una tarea difícil.

  2. Dejar php_sqlite.dll (SQLiteDatabase) detrás y hacia la nave nueva (objeto SQLite3) php_sqlite3.dll. Primero debe usar una herramienta como SQLite Studio para convertir su archivo de base de datos de 2.1 a 3.0 (el tamaño puede reducirse hasta la mitad) y luego compare cuidadosamente SQLite y SQLite3 páginas de manual de PHP para cambiar la función necesaria de objetos y funciones.

Si la opción de dos , tenga en cuenta que esto no debería ser un trabajo duro, ya que los cambios no son tan grandes.Por ejemplo, lo que he aprendido hasta ahora:

  • SQLiteDatabase ->SQLite3,
  • SQLiteDatabase::unbufferedQuery ->SQLite3::query,
  • SQLiteResult::fetchAll(SQLITE_*) ->SQLite3Result::fetchArray(SQLITE3_*) etc.

En cuanto a ir a buscar, en viejo SQLite teníamos:

$rowsIMEI = $db->unbufferedQuery($imeiSQL)->fetchAll(SQLITE_ASSOC); 

foreach($rowsIMEI as $r) 
{ 
    ... 
} 

Mientras que, en la nueva SQLite3 debemos:

$rowsIMEI = $db->query($imeiSQL); 

while($r = $rowsIMEI->fetchArray(SQLITE3_ASSOC)) 
{ 
    ... 
} 

Otros cambios requiere una cantidad similar de trabajo, así que esto no debería ser un proceso de por vida.

Yo, por supuesto, aconsejo encarecidamente a cualquier persona que avance y elija segunda opción. El progreso es en la mayoría de los casos la mejor de las dos opciones disponibles.

Cuestiones relacionadas