xintrea
Новичок
Поддержка SQLite3 в PHP5
Здравствуйте!
Чего-то я не догоняю, как пользоваться базой в формате SQLite3 в PHP5?
Скачал простейшую админку - phpSQLiteAdmin 0.3 (http://phpsqliteadmin.sourceforge.net). В ней могу открывать файлы в формате sqlite2, а базу в формате sqlite3 она открыть не может.
phpini() показывает такую информацию, касаемо sqlite:
Следуя логике, PHP должно быть пофигу, какой формат у файла базы. Вызвал sqlite_open(имя_файла) и вперед.
Однако в мануале на http://php.net есть как функция sqlite_open(), так и sqlite3_open(). Причем для функции sqlite_open() не написано, какой формат она поддерживает. То есть, я так понимаю, функция sqlite_open() должна держать все форматы (1,2,3) ? А функция sqlite3_open() поддерживает только формат 3, видимо открывая заточенный под 3-й формат обработчик ?
Или все не так просто, и единого (низкоуровневого) интерфейса для работы с разными версиями sqlite-баз в PHP нет?
-~{}~ 01.12.09 11:22:
Отвечаю сам на свой вопрос.
В PHP есть функции с именами вида sqlite_* и sqlite3_*.
Функции sqlite_* работают только с базами в формате SQLite 1 и 2. Так как формат 1 уже давно нигде не используется, можно считать, что функции sqlite_* предназначены для SQLite2.
Функции qlite3_* работают с базами в формате SQLite 3. Они включены в PHP для работы в не-объектноориентированном стиле, и практически полностью повторяют функционал, заложенный в функции sqlite_*.
Для работы с базами в формате SQLite 3 в данный момент рекомендуется использовать ООП-стиль. Все делается через объект PDO и его методы. PDO - это универсальный интерфейс для работы с любыми базами данных.
Работа через PDO выглядит так. Предположим, есть файл базы в формате SQLite3, и он называется base.db. Если он лежит в той же директории, что и php-скрипт, то открытие соединения с базой происходит так:
Обратите внимание, что в качестве префикса (до двоеточия) используется "sqlite", а не "sqlite3". Интерфейс PDO сам определяет формат файла. Строка "sqlite" показывает только тип базы, с которой происходит соединение.
Выборка данных происходит так:
Этого достаточно для начального понимания. Документация по методам PDO (на англицком) находится тут http://www.php.net/manual/en/class.pdo.php.
Здравствуйте!
Чего-то я не догоняю, как пользоваться базой в формате SQLite3 в PHP5?
Скачал простейшую админку - phpSQLiteAdmin 0.3 (http://phpsqliteadmin.sourceforge.net). В ней могу открывать файлы в формате sqlite2, а базу в формате sqlite3 она открыть не может.
phpini() показывает такую информацию, касаемо sqlite:
Вроде, всякого барахла для поддержки sqlite3 достаточно.Общая секция:
additional .ini files parsed:
/etc/php5/apache2/conf.d/pdo_sqlite.ini,
/etc/php5/apache2/conf.d/sqlite.ini,
/etc/php5/apache2/conf.d/sqlite3.ini
Секция PDO:
PDO support - enabled
PDO drivers - mysql, sqlite, sqlite2
Секция pdo_sqlite:
PDO Driver for SQLite 3.x - enabled
PECL Module version - 1.0.1 $Id: pdo_sqlite.c,v 1.10.2.6.2.1 2007/01/01 09:36:05 sebastian Exp $
SQLite Library - 3.3.13
Секция SQLite:
SQLite support - enabled
PECL Module version - 2.0-dev $Id: sqlite.c,v 1.166.2.13.2.6 2007/01/01 09:36:07 sebastian Exp $
SQLite Library - 2.8.17
SQLite Encoding - UTF-8
Секция SQLITE3:
SQLite3 support - enabled
sqlite3 library version - 3.3.13
Следуя логике, PHP должно быть пофигу, какой формат у файла базы. Вызвал sqlite_open(имя_файла) и вперед.
Однако в мануале на http://php.net есть как функция sqlite_open(), так и sqlite3_open(). Причем для функции sqlite_open() не написано, какой формат она поддерживает. То есть, я так понимаю, функция sqlite_open() должна держать все форматы (1,2,3) ? А функция sqlite3_open() поддерживает только формат 3, видимо открывая заточенный под 3-й формат обработчик ?
Или все не так просто, и единого (низкоуровневого) интерфейса для работы с разными версиями sqlite-баз в PHP нет?
-~{}~ 01.12.09 11:22:
Отвечаю сам на свой вопрос.
В PHP есть функции с именами вида sqlite_* и sqlite3_*.
Функции sqlite_* работают только с базами в формате SQLite 1 и 2. Так как формат 1 уже давно нигде не используется, можно считать, что функции sqlite_* предназначены для SQLite2.
Функции qlite3_* работают с базами в формате SQLite 3. Они включены в PHP для работы в не-объектноориентированном стиле, и практически полностью повторяют функционал, заложенный в функции sqlite_*.
Для работы с базами в формате SQLite 3 в данный момент рекомендуется использовать ООП-стиль. Все делается через объект PDO и его методы. PDO - это универсальный интерфейс для работы с любыми базами данных.
Работа через PDO выглядит так. Предположим, есть файл базы в формате SQLite3, и он называется base.db. Если он лежит в той же директории, что и php-скрипт, то открытие соединения с базой происходит так:
Код:
$db = new PDO('sqlite:base.db');
Выборка данных происходит так:
Код:
$rows = $db->query('SELECT * FROM table');