SQLite 函数 (PDO_SQLITE)

介绍

PDO_SQLITE 是一个驱动程序,它实现了 PHP 数据对象 (PDO) 接口,以启用对 SQLite 3 数据库的访问。

注意:

PDO_SQLITE 允许将字符串与流一起使用,以及 PDO::PARAM_LOB

安装

PDO_SQLITE PDO 驱动程序默认启用。要禁用,可以使用 --without-pdo-sqlite[=DIR],其中可选的 [=DIR] 是 sqlite 的基本安装目录。从 PHP 7.4.0 开始,需要 » libsqlite ≥ 3.5.0。以前,可以使用捆绑的 libsqlite,并且是默认值,如果省略了 [=DIR]

注意从 PHP 7.4.0 开始,在 Windows 上进行额外的设置

为了使此扩展正常工作,必须使 Windows 系统 PATH 中可以使用 DLL 文件。有关如何执行此操作的信息,请参阅名为 "如何在 Windows 上将我的 PHP 目录添加到 PATH" 的 FAQ。虽然将 DLL 文件从 PHP 文件夹复制到 Windows 系统目录也起作用(因为系统目录默认位于系统的 PATH 中),但不推荐这样做。此扩展需要以下文件位于 PATH 中: libsqlite3.dll.

目录

添加注释

用户贡献的注释 4 个注释

aidan at php dot net
18 年前
如果您在尝试写入 SQLite 数据库(更新、删除、删除)时遇到错误

警告:PDO::query() [function.query]:SQLSTATE[HY000]:一般错误:1 无法打开数据库

包含数据库文件的文件夹必须可写。
nospam8715 at dririan dot com
11 年前
您可以(更轻松地)运行查询“PRAGMA legacy_file_format = TRUE;”,而不是编译旧版本的 SQLite 来使用 PDO 捆绑的 SQLite 版本可以处理的旧数据库格式来创建数据库(如果您有现有的数据库,请从 SQLite shell 在您的数据库上运行“.dump”,在新的数据库上运行 SQLite shell,运行 PRAGMA,然后粘贴 .dump 的内容)。这将确保 SQLite 创建一个 SQLite 3.0 及更高版本可读的数据库。
ohcc at 163 dot com
3 年前
使用 PDO SQLite 驱动程序,包含多个 ? 的 SQL 中的计算可能不会按预期获得结果。

<?php
// ....
$stmt = $PDO->prepare('SELECT * FROM `X` WHERE `TimeUpdated`+?>?');
$stmt->execute([3600, time()]);
$data = $stmt->fetchAll();
print_r($data);
?>

要获得正确的结果,您有超过 3 种解决方案。

1. 将“SELECT * FROM `X` WHERE `TimeUpdated`+?>?”更改为“SELECT * FROM `X` WHERE `TimeUpdated`>?”,并使用 Php 进行数学运算(即:$stmt->execute([time()-3600]);)。

2. 使用 PdoStatement::bindParam 或 PdoStatement::bindValue,并将参数类型设置为 PDO::PARAM_INT。

3. 将“SELECT * FROM `X` WHERE `TimeUpdated`+?>?”更改为“SELECT * FROM `X` WHERE `TimeUpdated`+?>?+0”,这里“?+0”可以替换为其他数学函数或其他计算,例如“abs(?)”,您甚至可以用数学计算将 ? 包裹起来。
Duffalo
18 年前
请注意,截至本文发布之日,PDO_SQLITE 不会与使用当前版本的 SQLite 控制台应用程序 sqlite-3.3.6 创建的数据库文件进行交互。

目前需要从 http://www.sqlite.org/ 获取版本 3.2.8,但只能通过手动输入 URI 来获取,因为没有链接。转到 http://www.sqlite.org/download.html 并找到您要查找的版本的 URI,然后进行相应的版本号替换。
To Top