8

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

我按照SQLite 教程中的说明进行操作:入门。我还确保没有从 php.ini 中注释掉以下内容:

extension=php_pdo_sqlite.dll 
extension=php_sqlite.dll.

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

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

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

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

4

3 回答 3

9

我认为这个类SQLiteDatabase是从扩展而来sqlitepdo_sqlite。所以你可以启用sqlite扩展,或者使用 PDO 代替:

<?php
$conn = new PDO('sqlite:c:/mydb.sq3');
$conn->exec('some sql query');
于 2009-07-07T09:25:49.513 回答
5

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

extension=php_pdo.dll
extension=php_sqlite.dll

我建议您阅读手册中的这一页

于 2009-07-07T09:31:42.557 回答
2

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

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

你可以:

  1. 尝试在 Internet 的某个地方找到php_sqlite.dll( )。php_sqlite.so这样这样的链接可能对你有帮助。但是,您必须仔细地将旧的 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))
{
    ...
}

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

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

于 2013-05-16T13:03:21.490 回答