PHP 8.3.4 Released!

Funções do SQLite (PDO_SQLITE)

Introdução

PDO_SQLITE é um driver que implementa a Interface de Objeto de Dados do PHP (PDO) para permitir o acesso a bancos de dados SQLite 3.

Nota:

O PDO_SQLITE permite usar strings separadas de streams junto com PDO::PARAM_LOB.

Instalação

O driver PDO PDO_SQLITE está habilitado por padrão. Para desabilitá-lo, a opção --without-pdo-sqlite[=DIR] pode ser usada, onde o valor opcional [=DIR] é o diretório de instalação do sqlite. A partir do PHP 7.4.0, a » libsqlite ≥ 3.5.0 é necessária. Anteriormente, a libsqlite que vinha com o PHP poderia ser usada e era o padrão se [=DIR] fosse omitido.

Nota: Configuração adicional no Windows a partir do PHP 7.4.0

Para que esta extensão funcione, existem arquivos DLL que devem estar disponíveis no PATH do sistema Windows. Para saber como fazer isso, veja a FAQ intitulada "Como eu adiciono o meu diretório PHP ao PATH do Windows". Embora copiar arquivos DLL da pasta do PHP para o diretório system do Windows também funcione (porque o diretório system está, por padrão, no PATH do sistema), isso não é recomendado. Esta extensão requer que os seguintes arquivos estejam no PATH: libsqlite3.dll.

Índice

add a note

User Contributed Notes 4 notes

up
10
aidan at php dot net
18 years ago
If you receive an error while trying to write to a sqlite database (update, delete, drop):

Warning: PDO::query() [function.query]: SQLSTATE[HY000]: General error: 1 unable to open database

The folder that houses the database file must be writeable.
up
4
ohcc at 163 dot com
3 years ago
With PDO SQLite driver, calculation within an SQL with multiple ? may not get results as you expect.

<?php
// ....
$stmt = $PDO->prepare('SELECT * FROM `X` WHERE `TimeUpdated`+?>?');
$stmt->execute([3600, time()]);
$data = $stmt->fetchAll();
print_r($data);
?>

To get the right results, you have more than 3 solutions.

1. Change 'SELECT * FROM `X` WHERE `TimeUpdated`+?>?' to 'SELECT * FROM `X` WHERE `TimeUpdated`>?' and do the math using Php (ie: $stmt->execute([time()-3600]); ).

2. Use PdoStatement::bindParam or PdoStatement::bindValue, and set the parameter type to PDO::PARAM_INT.

3. Change 'SELECT * FROM `X` WHERE `TimeUpdated`+?>?' to 'SELECT * FROM `X` WHERE `TimeUpdated`+?>?+0', here '?+0' may be replaced by another math function or another calculation, such as 'abs(?)', you can even wrap both ? with a math calculation.
up
4
nospam8715 at dririan dot com
11 years ago
Instead of compiling an old version of SQLite to create a database using an older database format that the version of SQLite bundled with PDO can handle, you can (much more easily) just run the query "PRAGMA legacy_file_format = TRUE;" BEFORE creating the database (if you have an existing database, run ".dump" from the sqlite shell on your database, run the sqlite shell on a new database, run the PRAGMA, then paste the contents of the .dump). That will ensure SQLite creates a database readable by SQLite 3.0 and later.
up
-1
Duffalo
17 years ago
Note that as of the date of this post, PDO_SQLITE will not interact with database files created with the current version of the SQLite console application, sqlite-3.3.6.

It is currently necessary to obtain version 3.2.8, available from http://www.sqlite.org/ but only by entering the URI manually, as there is no link. Go to http://www.sqlite.org/download.html and find the URI of the version you're looking for, then make the appropriate version number substitution.
To Top