У меня есть база данных 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
Не удалось подключиться к базе данных.
Что случилось и как я могу это исправить?
Попробуйте использовать 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]; }
Подключение к базе данных После кода 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(); ?>
<?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' );