SQLite3::openBlob
(PHP 5 >= 5.3.0, PHP 7)
SQLite3::openBlob — BLOG を読み取るためのストリームリソースを開く
説明
public SQLite3::openBlob
( string $table
, string $column
, int $rowid
[, string $dbname
= "main"
[, int $flags
= SQLITE3_OPEN_READONLY
]] ) : resource|false
BLOB を読み書きするためのストリームリソースを開きます。 これは、以下によって選択されます:
SELECT column
FROM dbname
.table
WHERE rowid = rowid
注意:
ストリームに書き込むことで、BLOBのサイズを変更することは不可能です。 BLOB のサイズを望んだサイズに設定するには、代わりに UPDATE 文を実行するか、 SQLite の zeroblob() 関数を使ってください。
パラメータ
table
- テーブル名
column
- カラム名
rowid
- 行ID
dbname
- DB のシンボリック名
flags
SQLITE3_OPEN_READONLY
またはSQLITE3_OPEN_READWRITE
を指定します。 それぞれ、読み取り専用でストリームを開くか、 読み取りと書き込みができるようにストリームを開きます。
返り値
ストリームしロースを返します。
失敗した場合に false
を返します
変更履歴
バージョン | 説明 |
---|---|
7.2.0 | flags が追加されました。
BLOB に書き込むことができます。これより前のバージョンでは、読み取りのみがサポートされていました。 |
例
例1 SQLite3::openBlob() の例
<?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 インクリメンタルに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