(PHP 5 >= 5.3.0, PHP 7, PHP 8)
SQLite3::openBlob — 開啟串流資源以讀取 BLOB
$table
,$column
,$rowid
,$database
= "main",$flags
= SQLITE3_OPEN_READONLY
開啟一個串流資源來讀取或寫入 BLOB,該 BLOB 可透過以下 SQL 語法選取:
SELECT 欄位名稱
FROM 資料庫名稱
.表格名稱
WHERE rowid = 列ID
注意:無法透過寫入串流來更改 BLOB 的大小。必須執行 UPDATE 語句,可能需要使用 SQLite 的 zeroblob() 函式來設定所需的 BLOB 大小。
表格名稱 (table)
表格名稱。
欄位名稱 (column)
欄位名稱。
列ID (rowid)
列 ID。
資料庫名稱 (database)
資料庫的符號名稱。
旗標 (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); // 必須執行,否則下一行會失敗
$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