(PHP 5 >= 5.3.0, PHP 7, PHP 8)
SQLite3::openBlob — Abre un flujo de recurso para leer un BLOB
$table
,$column
,$rowid
,$database
= "main",$flags
= SQLITE3_OPEN_READONLY
Abre un flujo de recurso para leer o escribir un BLOB, que sería seleccionado por:
SELECT column
FROM database
.table
WHERE rowid = rowid
Nota: No es posible cambiar el tamaño de un BLOB escribiendo en el flujo. En su lugar, una declaración UPDATE debe ser ejecutada, utilizando, eventualmente, la función zeroblob() de SQLite para definir el tamaño del BLOB deseado.
table
El nombre de la tabla.
column
El nombre de la columna.
rowid
La ID de la fila.
database
El nombre simbólico de la base de datos.
flags
O bien SQLITE3_OPEN_READONLY
o
SQLITE3_OPEN_READWRITE
para abrir el flujo
en modo de solo lectura o de lectura y escritura, respectivamente.
Devuelve un recurso de flujo, o false
en caso de error.
Versión | Descripción |
---|---|
7.2.0 |
El argumento flags fue añadido, permitiendo
escribir BLOBs; anteriormente solo la lectura era soportada.
|
Ejemplo #1 Ejemplo con 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); // obligatorio, de lo contrario la siguiente línea fallaría
$conn->close();
?>
El resultado del ejemplo sería:
Lorem ipsum
Ejemplo #2 Escribir progresivamente un 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