SQLite3::openBlob
(PHP 5 >= 5.3.0, PHP 7)
SQLite3::openBlob — Opens a stream resource to read a BLOB
説明
$table
, string $column
, int $rowid
[, string $dbname = "main"
[, int $flags = SQLITE3_OPEN_READONLY
]] ) : resourceOpens a stream resource to read or write a BLOB, which would be selected by:
SELECT column FROM dbname.table WHERE rowid = rowid
注意: 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_READONLYorSQLITE3_OPEN_READWRITEto 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.
|
例
例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
例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