SQLite3::openBlob
(PHP 5 >= 5.3.0, PHP 7)
SQLite3::openBlob — Открывает ресурс потока для чтения BLOB
Описание
$table
, string $column
, int $rowid
, string $dbname
= "main"
, int $flags
= SQLITE3_OPEN_READONLY
) : resource|falseОткрывает ресурс потока для чтения или записи BLOB, который будет выбран:
SELECT column
FROM dbname
.table
WHERE rowid = rowid
Замечание: Невозможно изменить размер BLOB путем записи в поток. Вместо этого необходимо выполнить запрос UPDATE, возможно, используя SQLite-функцию zeroblob(), чтобы задать желаемый размер BLOB.
Список параметров
-
table
-
Название таблицы.
-
column
-
Название столбца.
-
rowid
-
Идентификатор строки.
-
dbname
-
Символическое название базы данных
-
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