PHP

SQLite3::openBlob

SQLite3::openBlob

(PHP 5 >= 5.3.0, PHP 7)

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

描述

public resource SQLite3::openBlob ( string $table , string $column , int $rowid [, string $dbname = "main" [, int $flags = SQLITE3_OPEN_READONLY ]] )

打开流资源以读取或写入BLOB,该BLOB将通过以下方式进行选择:

选择columndbname . tableWHERE rowid =rowid

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

参数

table

表名。

column

列名称。

rowid

行ID。

dbname

数据库的符号名称

flags

无论是SQLITE3_OPEN_READONLYSQLITE3_OPEN_READWRITE打开流只读,或分别打开阅读和写作。

返回值

返回流资源,或者失败返回FALSE

Changelog

描述
7.2.0flags参数已添加,允许写入BLOB; 以前只有阅读得到支持。

示例

Example #1 SQLite3::openBlob() example

<?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 // mandatory, otherwise the next line would fail $conn->close( ?>

上面的例子将输出:

Lorem ipsum

Example #2 Incrementally writing a 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

← SQLite3::open

SQLite3::prepare →