(PHP 5 >= 5.3.0, PHP 7, PHP 8)
SQLite3::openBlob — 打开一个流资源以读取 BLOB
$table,$column,$rowid,$database = "main",$flags = SQLITE3_OPEN_READONLY打开一个流资源以读取或写入 BLOB,该 BLOB 将通过以下方式选择
SELECT column FROM database.table WHERE rowid = rowid
注意: 无法通过写入流来更改 BLOB 的大小。相反,必须执行 UPDATE 语句,可能使用 SQLite 的 zeroblob() 函数来设置所需的 BLOB 大小。
table表名。
column列名。
rowid行 ID。
database数据库的符号名称
flagsSQLITE3_OPEN_READONLY 或 SQLITE3_OPEN_READWRITE,分别用于以只读方式或以读写方式打开流。
返回一个流资源,或者在失败时返回 false。
| 版本 | 描述 |
|---|---|
| 7.2.0 | 添加了 flags 参数,允许写入 BLOB;以前仅支持读取。 |
示例 #1 SQLite3::openBlob() 示例
<?php
$conn = new SQLite3(':memory:');
$conn->exec('CREATE TABLE test (text text)');
$conn->exec("INSERT INTO test VALUES ('Lorem ipsum')");
$stream = $conn->openBlob('test', 'text', 1);
echo stream_get_contents($stream);
fclose($stream); // 必须,否则下一行将失败
$conn->close();
?>以上示例将输出
Lorem ipsum
示例 #2 增量写入 BLOB
<?php
$conn = new SQLite3(':memory:');
$conn->exec('CREATE TABLE test (text text)');
$conn->exec("INSERT INTO test VALUES (zeroblob(36))");
$stream = $conn->openBlob('test', 'text', 1, 'main', SQLITE3_OPEN_READWRITE);
for ($i = 0; $i < 3; $i++) {
fwrite($stream, "Lorem ipsum\n");
}
fclose($stream);
echo $conn->querySingle("SELECT text FROM test");
$conn->close();
?>以上示例将输出
Lorem ipsum Lorem ipsum Lorem ipsum