SQLite3::openBlob()
(PHP 5 >= 5.3.0, PHP 7)
Opens a stream resource to read a BLOB
说明
public SQLite3::openBlob(string $table,string $column,int $rowid[,string $dbname= "main"[,int $flags= SQLITE3_OPEN_READONLY]]): resource
Opens a stream resource to read or write a BLOB, which would be selected by:
SELECT$columnFROM$dbname.$tableWHERE rowid =$rowid
Note: It is not possible to change the size of a BLOB by writing to the stream. Instead, an UPDATE statement has to be executed, possibly using SQLite's zeroblob()function to set the desired BLOB size.
参数
- $table
The table name.
- $column
The column name.
- $rowid
The row ID.
- $dbname
The symbolic name of the DB
- $flags
Either
SQLITE3_OPEN_READONLY
orSQLITE3_OPEN_READWRITE
to open the stream for reading only, or for reading and writing, respectively.
返回值
Returns a stream resource,或者在失败时返回FALSE
.
更新日志
版本 | 说明 |
---|---|
7.2.0 | The$flagsparameter has been added, allowing to write BLOBs; formerly only reading was supported. |
范例
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
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