PHP Conference Japan 2024

SQLite3::openBlob

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::openBlob開啟串流資源以讀取 BLOB

說明

public SQLite3::openBlob(
    字串 $table,
    字串 $column,
    整數 $rowid,
    字串 $database = "main",
    整數 (int) $flags = SQLITE3_OPEN_READONLY
): 資源 (resource)|false

開啟一個串流資源來讀取或寫入 BLOB,該 BLOB 可透過以下 SQL 語法選取:

SELECT 欄位名稱 FROM 資料庫名稱.表格名稱 WHERE rowid = 列ID

注意無法透過寫入串流來更改 BLOB 的大小。必須執行 UPDATE 語句,可能需要使用 SQLite 的 zeroblob() 函式來設定所需的 BLOB 大小。

參數

表格名稱 (table)

表格名稱。

欄位名稱 (column)

欄位名稱。

列ID (rowid)

列 ID。

資料庫名稱 (database)

資料庫的符號名稱。

旗標 (flags)

SQLITE3_OPEN_READONLYSQLITE3_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

新增註解

使用者貢獻的註解

此頁面沒有使用者貢獻的註解。
To Top