SQLite3::openBlob

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

SQLite3::openBlobOpens a stream resource to read a BLOB

Descripción

publicSQLite3::openBlob(
    string$table,
    string$column,
    int$rowid,
    string$database = "main",
    int$flags = SQLITE3_OPEN_READONLY
): resource|false

Opens a stream resource to read or write a BLOB, which would be selected by:

SELECT column FROM database.table WHERE rowid = rowid

Nota: 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.

Parámetros

table

The table name.

column

The column name.

rowid

The row ID.

database

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.

Valores devueltos

Returns a stream resource, o false en caso de error.

Historial de cambios

VersiónDescripción
7.2.0 The flags parameter has been added, allowing to write BLOBs; formerly only reading was supported.

Ejemplos

Ejemplo #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();
?>

El resultado del ejemplo sería:

Lorem ipsum

Ejemplo #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();
?>

El resultado del ejemplo sería:

Lorem ipsum Lorem ipsum Lorem ipsum
To Top