【问题标题】:How can I use and access an SQLite DB using PHP and Wamp Server?如何使用 PHP 和 Wamp Server 使用和访问 SQLite DB?
【发布时间】:2010-11-08 15:17:06
【问题描述】:

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

我按照SQLite tutorial: Getting started 的指示进行操作。我还确保没有从 php.ini 中注释掉以下内容:

extension=php_pdo_sqlite.dll 
extension=php_sqlite.dll.

但是当我使用 Firefox 从 localhost 打开 PHP 文件时,我得到了这个错误:

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

顺便说一下,我在 Windows 上,如果该信息很重要的话。

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

【问题讨论】:

    标签: php database windows sqlite pdo


    【解决方案1】:

    我认为SQLiteDatabase 类来自扩展sqlite 而不是pdo_sqlite。所以你可以启用 sqlite 扩展,或者使用 PDO 代替:

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

    【讨论】:

    • 非常感谢!我想我能够通过打开数据库,因为现在错误与查询有关!现在我只需要学习语法和所有内容!再次感谢!
    【解决方案2】:

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

    extension=php_pdo.dll
    extension=php_sqlite.dll
    

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

    【讨论】:

      【解决方案3】:

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

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

      你可以:

      1. 尝试在 Internet 的某个地方找到 php_sqlite.dll (php_sqlite.so)。 thisthis 之类的链接可能对您有所帮助。但是,您必须仔细地将旧 SQLite 库文件与您的 PHP 平台(x64x86)、构建引擎(VC6VC9VC11)、版本(5.x)和类型(TS 表示 线程安全NTS 表示 非线程安全)。这可能是一项艰巨的任务。

      2. php_sqlite.dll (SQLiteDatabase) 留在后面并运送到新的php_sqlite3.dll (SQLite3 对象)。您必须首先使用SQLite Studio 之类的工具将您的数据库文件从2.1 转换为3.0(大小甚至可以降低一半),然后仔细比较SQLiteSQLite3 PHP 手册页以更改必要的对象和函数打电话。

      如果选项两个,请注意这不应该是一项艰巨的工作,因为变化并没有那么大。例如,到目前为止我所学到的:

      • SQLiteDatabase -> SQLite3,
      • SQLiteDatabase::unbufferedQuery -> SQLite3::query,
      • SQLiteResult::fetchAll(SQLITE_*) -> SQLite3Result::fetchArray(SQLITE3_*)

      至于获取,在旧的SQLite 我们有:

      $rowsIMEI = $db->unbufferedQuery($imeiSQL)->fetchAll(SQLITE_ASSOC);
      
      foreach($rowsIMEI as $r)
      {
          ...
      }
      

      虽然,在新的SQLite3 中,我们应该:

      $rowsIMEI = $db->query($imeiSQL);
      
      while($r = $rowsIMEI->fetchArray(SQLITE3_ASSOC))
      {
          ...
      }
      

      其他更改需要类似的工作量,因此这不应该是一个终身过程。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多