У меня есть установка PHP без SQLite-Functionality в качестве базовой установки, поэтому нет функций sqlite_ *.
Есть ли библиотека PHP (PHP-код), которая может обращаться к базам данных SQLite без необходимости устанавливать какие-либо плагины в PHP?
(Я не могу изменить конфигурацию сервера)
На самом деле мне нужна только базовая поддержка (только для операторов SELECT)
В основном я ищу PHP-драйвер с чистым PHP, как https://github.com/kripken/sql.js – это реализация JS-версии SQLite драйвера pure-JS.
Я не нашел какой-либо простой драйвер php sqlite для поиска в google. Я попытался получить что-то из груши, но драйвер sqlite mdb2 использует расширение sqlite php для работы:
root@blackbigone:~# pear install MDB2_Driver_sqlite pear/MDB2_Driver_sqlite requires PHP extension "sqlite" No valid packages found install failed
После установки php-sqlite модуль груши прошел нормально:
root@blackbigone:~# pear install MDB2_Driver_sqlite downloading MDB2_Driver_sqlite-1.4.1.tgz ... Starting to download MDB2_Driver_sqlite-1.4.1.tgz (30,921 bytes) .........done: 30,921 bytes install ok: channel://pear.php.net/MDB2_Driver_sqlite-1.4.1
Читая код, любая из оберток php sqlite, которую я нашел, имеет что-то вроде этого:
if (!function_exists('sqlite_open')) return false;
Итак, я думаю, что никто еще не написал чистый SQL-драйвер на PHP. Сожалею.
Разный вопрос: если он достаточно умен, чтобы на самом деле это сделать …
Я думаю, что лучший способ – импортировать базы данных sqlite в mysql или в какой-нибудь другой db, который можно использовать. Хорошо, это все еще требует установки sqlite
…
Вот как это можно сделать:
class ExtremelySimpleAndPowerfulSQLite { private $database_file; public function __construct( $filename ) { $this->database_file = $filename; } public function sqlite_query( $sql ) { ob_start(); passthru("sqlite ".$this->database_file." '$sql'", $result); if ($result <> 0) { ob_end_clean(); return false; } $sqlite_result = ob_get_contents(); ob_end_clean(); return $sqlite_result; } } $sqlite = new ExtremelySimpleAndPowerfulSQLite("test.db"); // It works, huh... echo $sqlite->sqlite_query('select * from table'); if ($foobar = $sqlite->sqlite_query('select * from mytable')) echo $foobar;
это делает sqlite без собственных функций sqlite php, поэтому …
Любая php-библиотека либо написана в чистом php и использует некоторые базовые функции, либо модуль, который должен быть установлен.
Следовательно, единственный вариант – взять код C для этого модуля и переписать его в php. AFAIK, только требуемые низкоуровневые функции, работают с сетевыми сокетами и доступны в php.
может быть, я немного опоздал с моим ответом, но я уверен, что это может быть полезно другим пользователям, которые ищут такие вопросы. SQLite – исключительная часть программного обеспечения, и иногда он может заменить MySQL или другие классически используемые базы данных. (давайте подумаем о сайтах с низким трафиком ..) К несчастью, он доступен как расширение PHP, и поэтому может быть отключено на стороне сервера, если полагаться на сторонних дешевых хостинг-провайдеров. Вот почему я начал разрабатывать PHPFileDB, полную плоскую файловую базу данных, закодированную в PHP, с полной поддержкой синтаксиса SQL (моя цель – получить полную совместимость с фреймворками на основе MySQL)
Очевидно, что он является открытым исходным кодом и доступен на https://github.com/morepaolo/PHPFileDB
Надеюсь быть полезным!