SQLite3::openBlob

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

SQLite3::openBlobAbre um recurso de fluxo para ler um BLOB

Descrição

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

Abre um recurso de fluxo para ler ou escrever um BLOB, que seria selecionado por:

SELECT column FROM database.table WHERE rowid = rowid

Note: Não é possível alterar o tamanho de um BLOB escrevendo no fluxo. Em vez disso, uma declaração UPDATE deve ser executada, possivelmente usando a função zeroblob() do SQLite para definir o tamanho desejado do BLOB.

Parâmetros

table

O nome da tabela.

column

O nome da coluna.

rowid

O ID da linha.

database

O nome simbólico do banco de dados.

flags

Seja SQLITE3_OPEN_READONLY ou SQLITE3_OPEN_READWRITE para abrir o fluxo somente para leitura ou para leitura e escrita, respectivamente.

Valor Retornado

Retorna um recurso de fluxo, ou false em caso de falha.

Registro de Alterações

Versão Descrição
7.2.0 O parâmetro flags foi adicionado, permitindo escrever BLOBs; anteriormente, apenas a leitura era suportada.

Exemplos

Example #1 Exemplo de 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); // obrigatório, caso contrário a próxima linha falharia
$conn->close();
?>

O exemplo acima produzirá:

Lorem ipsum

Example #2 Escrevendo incrementalmente um 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();
?>

O exemplo acima produzirá:

Lorem ipsum
Lorem ipsum
Lorem ipsum