sqlite_open - ¿Cómo me conecto a una base de datos SQLite con PHP?
sqlite php ejemplo (3)
Esta pregunta ya tiene una respuesta aquí:
- Error: el archivo está encriptado o no es una base de datos 7 respuestas
Tengo una base de datos SQLite y estoy intentando conectarme a ella con PHP. Esto es lo que estoy usando:
<?php
$dbconn = sqlite_open(''combadd.sqlite'');
if ($dbconn) {
$result = sqlite_query($dbconn, "SELECT * FROM combo_calcs WHERE options=''easy''");
var_dump(sqlite_fetch_array($result, SQLITE_ASSOC));
} else {
print "Connection to database failed!/n";
}
?>
Sin embargo, me sale este error:
Advertencia:
sqlite_open()
[function.sqlite-open]: el archivo está cifrado o no es una base de datos enC:/xampp/htdocs/deepthi/combadd/combadd_db.php
en la línea 4
Falló la conexión a la base de datos!
¿Qué está mal y cómo puedo solucionarlo?
Trate de usar PDO en lugar de sqlite_open:
$dir = ''sqlite:/[YOUR-PATH]/combadd.sqlite'';
$dbh = new PDO($dir) or die("cannot open the database");
$query = "SELECT * FROM combo_calcs WHERE options=''easy''";
foreach ($dbh->query($query) as $row)
{
echo $row[0];
}
$dbh = null; //This is how you close a PDO connection
Conexión a la base de datos El código PHP siguiente muestra cómo conectarse a una base de datos existente. Si la base de datos no existe, se creará y finalmente se devolverá un objeto de base de datos.
<?php
class MyDB extends SQLite3
{
function __construct()
{
$this->open(''combadd.sqlite'');
}
}
$db = new MyDB();
if(!$db){
echo $db->lastErrorMsg();
} else {
echo "Opened database successfully/n";
}
?>
Ahora ejecutemos el programa anterior para crear nuestra base de datos test.db en el directorio actual. Puede cambiar su camino según su requisito. Si la base de datos se crea correctamente, dará el siguiente mensaje:
Open database successfully
Operación SELECT
El siguiente programa PHP muestra cómo podemos obtener y mostrar registros
<?php
class MyDB extends SQLite3
{
function __construct()
{
$this->open(''combadd.sqlite'');
}
}
$db = new MyDB();
if(!$db){
echo $db->lastErrorMsg();
} else {
echo "Opened database successfully/n";
}
$sql =<<<EOF
SELECT * FROM combo_calcs WHERE options=''easy'';
EOF;
$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
echo "ID = ". $row[''ID''] . "/n";
}
echo "Operation done successfully/n";
$db->close();
?>
<?php
if ($db = sqlite_open(''sampleDB'', 0666, $sqliteerror) ) {
$result = sqlite_query($db, ''select bar from foo'');
var_dump(sqlite_fetch_array($result) );
} else {
die($sqliteerror);
}
?>
Asegúrese de que el soporte de sqlite esté habilitado, verifique phpinfo ()
Otra solución a su problema es: usar el módulo sqlite3 en su lugar
class DB extends SQLite3
{
function __construct( $file )
{
$this->open( $file );
}
}
$db = new DB( ''sampleDB.sqlite'' );