Как подключиться к базе данных 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' );