J'ai une base de données SQLite et j'essaie de me connecter avec PHP. Voici ce que j'utilise:
<?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";
}
?>
Cependant, j'obtiens cette erreur:
Avertissement:
sqlite_open()
[function.sqlite-open]: le fichier est crypté ou n'est pas une base de données dansC:\xampp\htdocs\deepthi\combadd\combadd_db.php
À la ligne 4
La connexion à la base de données a échoué!
Quel est le problème et comment puis-je le réparer?
Essayez d'utiliser PDO au lieu 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
Connexion à la base de données Suite PHP montre comment se connecter à une base de données existante. Si la base de données n'existe pas, elle sera créée et enfin un objet de base de données sera retourné .
<?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";
}
?>
Maintenant, exécutons le programme ci-dessus pour créer notre base de données test.db dans le répertoire courant. Vous pouvez changer votre chemin selon vos besoins. Si la base de données est créée avec succès, elle donnera le message suivant:
Open database successfully
Opération SELECT
Le programme PHP montre comment récupérer et afficher les enregistrements
<?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);
}
?>
Assurez-vous que le support sqlite est activé, vérifiez phpinfo ()
Une autre solution à votre problème est la suivante: utiliser le module sqlite3 à la place
class DB extends SQLite3
{
function __construct( $file )
{
$this->open( $file );
}
}
$db = new DB( 'sampleDB.sqlite' );