(PHP 5 >= 5.3.0, PHP 7, PHP 8)
SQLite3::openBlob — Ouvre un flux de ressource pour lire un BLOB
$table
,$column
,$rowid
,$database
= "main",$flags
= SQLITE3_OPEN_READONLY
Ouvre un flux de ressource pour lire ou écrire un BLOB, qui serait sélectionné par :
SELECT column
FROM database
.table
WHERE rowid = rowid
Note: Il n'est pas possible de changer la taille d'un BLOB en écrivant vers le flux. À la place, une déclaration UPDATE doit être exécuté, en utilisant, éventuellement la fonction zeroblob() de SQLite pour définir la taille du BLOB désiré.
table
Le nom de la table.
column
Le nom de la colonne.
rowid
La ligne ID.
database
Le nom symbolic de la base de données.
flags
Soit SQLITE3_OPEN_READONLY
ou
SQLITE3_OPEN_READWRITE
pour ouvrir le flux
en lecture seule, ou en lecture et écriture, respectivement.
Retourne une ressource de flux, ou false
si une erreur survient.
Version | Description |
---|---|
7.2.0 |
Le paramètre flags a été ajouté, permettant
d'écrire des BLOBs ; précédement seul la lecture était supporté.
|
Exemple #1 Exemple avec 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();
?>
L'exemple ci-dessus va afficher :
Lorem ipsum
Exemple #2 Écrire progressivement 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();
?>
L'exemple ci-dessus va afficher :
Lorem ipsum Lorem ipsum Lorem ipsum