Как подключиться к базе данных SQLite с помощью PHP?

У меня есть база данных SQLite и я пытаюсь подключиться к ней с помощью PHP. Это то, что я использую:

<?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";
    }
?>

Однако я получаю эту ошибку:

Предупреждение: sqlite_open() [function.sqlite-open]: файл зашифрован или не является базой данных в C:\xampp\htdocs\deepthi\combadd\combadd_db.php в строке 4
Не удалось подключиться к базе данных.

Что не так и как я могу исправить?

Ответ 1

Попробуйте использовать PDO вместо 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];
}

Ответ 2

Подключение к базе данных Следующий PHP-код показывает, как подключиться к существующей базе данных. Если база данных не существует, она будет создана и, наконец, будет возвращен объект базы данных.

<?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";
   }
?>

Теперь запустите программу выше, чтобы создать нашу базу данных test.db в текущем каталоге. Вы можете изменить свой путь согласно вашему требованию. Если база данных успешно создана, она выдаст следующее сообщение:

Open database successfully

Операция SELECT

Следующая программа PHP показывает, как мы можем извлекать и отображать записи

<?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();
?>

Ответ 3

<?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);
    }

?>

Убедитесь, что поддержка sqlite включена, проверьте phpinfo()

Еще одно решение вашей проблемы: Вместо использования модуля sqlite3

class DB extends SQLite3
{
        function __construct( $file )
        {
            $this->open( $file );
        }
}

$db = new DB( 'sampleDB.sqlite' );