PHP Conference Nagoya 2025

SQLite3::openBlob

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

SQLite3::openBlobOuvre un flux de ressource pour lire un BLOB

Description

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

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é.

Liste de paramètres

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.

Valeurs de retour

Retourne une ressource de flux, ou false si une erreur survient.

Historique

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é.

Exemples

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

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top