我知道PHP 5已经支持SQLite,但出于某种原因我无法让它工作。
我按照SQLite tutorial: Getting started的说明操作。我还确保从php.ini中注释掉以下内容:
extension=php_pdo_sqlite.dll
extension=php_sqlite.dll.
但是当我使用Firefox从localhost打开PHP文件时,我收到此错误:
致命错误:找不到“SQLiteDatabase”类。
顺便说一句,如果这个信息很重要,我就是在Windows上。
这个问题的原因可能是什么?
答案 0 :(得分:8)
我认为课程SQLiteDatabase
来自分机sqlite
而非pdo_sqlite
。因此,您可以启用sqlite
扩展名,或使用PDO代替:
<?php
$conn = new PDO('sqlite:c:/mydb.sq3');
$conn->exec('some sql query');
答案 1 :(得分:5)
答案 2 :(得分:2)
类SQLiteDatabase
是来自sqlite库的对象,该支持在PHP 5.4中被删除,但在各种系统和配置中可能在早期版本中被禁用,因为此库长时间标记为将被弃用。
较新版本的PHP不再支持库php_sqlite.dll
(Windows)或php_sqlite.so
(Linux),并分别替换为php_sqlite3.dll
或php_sqlite3.so
。
你可以:
尝试在互联网的某处找到php_sqlite.dll
(php_sqlite.so
)。 this或this等链接可能对您有所帮助。但是,您必须仔细匹配旧的SQLite库文件到PHP的平台(x64
或x86
),构建引擎(VC6
,VC9
或{{1} }),版本(VC11
)和类型(5.x
用于线程安全或TS
用于非线程安全)。这可能是一项艰巨的任务。
将NTS
(php_sqlite.dll
)放在后面,然后发送到新的SQLiteDatabase
(php_sqlite3.dll
对象)。您必须首先使用SQLite Studio之类的工具将数据库文件从2.1转换为3.0(大小可以降低一半),然后仔细比较SQLite和SQLite3 PHP手册页更改必要的对象和函数调用。
如果选项两个,请注意这不应该是一项艰苦的工作,因为更改不是那么大。例如,到目前为止我学到了什么:
SQLite3
- &gt; SQLiteDatabase
,SQLite3
- &gt; SQLiteDatabase::unbufferedQuery
,SQLite3::query
- &gt; SQLiteResult::fetchAll(SQLITE_*)
等。至于抓取,在旧SQLite我们有:
SQLite3Result::fetchArray(SQLITE3_*)
然而,在新的SQLite3我们应该:
$rowsIMEI = $db->unbufferedQuery($imeiSQL)->fetchAll(SQLITE_ASSOC);
foreach($rowsIMEI as $r)
{
...
}
其他变化需要相似的工作量,因此这不应该是终身过程。
当然,我强烈建议任何人前进并选择第二个选项。在大多数情况下,进展是两个可用选项中较好的一个。