SQLite3::openBlob

(PHP 5 >= 5.3.0, PHP 7)

SQLite3::openBlobOpens 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 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 or SQLITE3_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