web-dev-qa-db-fra.com

Comment me connecter à une base de données SQLite avec PHP?

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 dans C:\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?

22
user2412936

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
34

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();
?>
8
Yogus
<?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' );
1
justnajm