SQLite3::openBlob

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::openBlob打开一个流资源以读取 BLOB

描述

public SQLite3::openBlob(
    string $table,
    string $column,
    int $rowid,
    string $database = "main",
    int $flags = SQLITE3_OPEN_READONLY
): resource|false

打开一个流资源以读取或写入 BLOB,它将由以下语句选择

SELECT column FROM database.table WHERE rowid = rowid

注意: 无法通过写入流来更改 BLOB 的大小。 相反,必须执行 UPDATE 语句,可能使用 SQLite 的 zeroblob() 函数来设置所需的 BLOB 大小。

参数

table

表名。

column

列名。

rowid

行 ID。

database

数据库的符号名

flags

SQLITE3_OPEN_READONLYSQLITE3_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

添加备注

用户贡献的注释

此页面没有用户贡献的注释。
To Top