International PHP Conference Berlin 2025

SQLite3::openBlob

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

SQLite3::openBlobОткрывает ресурс потока для чтения BLOB

Описание

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

Открывает ресурс потока для чтения или записи BLOB, который будет выбран:

SELECT column FROM database.table WHERE rowid = rowid

Замечание: Невозможно изменить размер BLOB путём записи в поток. Вместо этого необходимо выполнить запрос UPDATE, возможно, используя SQLite-функцию zeroblob(), чтобы задать желаемый размер BLOB.

Список параметров

table

Название таблицы.

column

Название столбца.

rowid

Идентификатор строки.

database

Символическое название базы данных

flags

Либо SQLITE3_OPEN_READONLY, либо SQLITE3_OPEN_READWRITE, чтобы открыть поток только для чтения или для чтения и записи, соответственно.

Возвращаемые значения

Возвращает ресурс потока или false, если возникла ошибка.

Список изменений

Версия Описание
7.2.0 Добавлен параметр flags, позволяющий записать BLOB; ранее поддерживалось только чтение.

Примеры

Пример #1 Пример использования 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); // обязательно, иначе на следующей строке произойдёт ошибка
$conn->close();
?>

Результат выполнения приведённого примера:

Lorem ipsum

Пример #2 Пошаговая запись 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();
?>

Результат выполнения приведённого примера:

Lorem ipsum
Lorem ipsum
Lorem ipsum

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top