Php/docs/sqlite3.openblob
SQLite3::openBlob
(PHP 5 >= 5.3.0, PHP 7)
SQLite3::openBlob — 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|false
Opens a stream resource to read or write a BLOB, which would be selected by:
SELECT column
FROM dbname
.table
WHERE 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 flags parameter has been added, allowing to
write BLOBs; formerly only reading was supported. |
范例
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