如何使用PHP和Wamp Server使用和访问SQLite数据库?

时间:2009-07-07 09:08:05

标签: php database windows sqlite pdo

我知道PHP 5已经支持SQLite,但出于某种原因我无法让它工作。

我按照SQLite tutorial: Getting started的说明操作。我还确保从php.ini中注释掉以下内容:

extension=php_pdo_sqlite.dll 
extension=php_sqlite.dll.

但是当我使用Firefox从localhost打开PHP文件时,我收到此错误:

  

致命错误:找不到“SQLiteDatabase”类。

顺便说一句,如果这个信息很重要,我就是在Windows上。

这个问题的原因可能是什么?

3 个答案:

答案 0 :(得分:8)

我认为课程SQLiteDatabase来自分机sqlite而非pdo_sqlite。因此,您可以启用sqlite扩展名,或使用PDO代替:

<?php
$conn = new PDO('sqlite:c:/mydb.sq3');
$conn->exec('some sql query');

答案 1 :(得分:5)

在Windows上,您需要在ini中设置以下内容:

extension=php_pdo.dll
extension=php_sqlite.dll

我建议您阅读手册中的this page

答案 2 :(得分:2)

SQLiteDatabase是来自sqlite库的对象,该支持在PHP 5.4中被删除,但在各种系统和配置中可能在早期版本中被禁用,因为此库长时间标记为将被弃用

较新版本的PHP不再支持库php_sqlite.dll(Windows)或php_sqlite.so(Linux),并分别替换为php_sqlite3.dllphp_sqlite3.so

你可以:

  1. 尝试在互联网的某处找到php_sqlite.dllphp_sqlite.so)。 thisthis等链接可能对您有所帮助。但是,您必须仔细匹配旧的SQLite库文件到PHP的平台(x64x86),构建引擎(VC6VC9或{{1} }),版本(VC11)和类型(5.x用于线程安全TS用于非线程安全)。这可能是一项艰巨的任务。

  2. NTSphp_sqlite.dll)放在后面,然后发送到新的SQLiteDatabasephp_sqlite3.dll对象)。您必须首先使用SQLite Studio之类的工具将数据库文件从2.1转换为3.0(大小可以降低一半),然后仔细比较SQLiteSQLite3 PHP手册页更改必要的对象和函数调用。

  3. 如果选项两个,请注意这不应该是一项艰苦的工作,因为更改不是那么大。例如,到目前为止我学到了什么:

    • 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)
    {
        ...
    }
    

    其他变化需要相似的工作量,因此这不应该是终身过程。

    当然,我强烈建议任何人前进并选择第二个选项。在大多数情况下,进展是两个可用选项中较好的一个。