是否可以在没有sqlite函数的情况下将SQLite数据库与PHP一起使用


Is it possible to use SQLite Databases with PHP without the sqlite functions?

我有一个没有SQLite-Function作为基本安装的PHP安装,所以没有sqlite_*函数可用。

是否有一个PHP库(PHP代码)可以访问SQLite数据库,而无需在PHP中安装任何插件?
(我无法更改服务器配置)

事实上,我只需要基本支持(仅限选择语句)

基本上,我正在寻找一个纯PHPSQLite驱动程序,就像 https://github.com/kripken/sql.js SQLite驱动程序的纯JS实现一样。

一切皆有可能

不同的问题是,它是否足够聪明来真正做到这一点......

我认为更好的方法是将 sqlite 数据库导入 mysql 或其他可用的数据库。好的,这仍然需要安装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;

这在没有那些 PHP 自己的 SQLite 函数的情况下做 SQLITE,所以......

任何 php 库要么是用纯 php 编写的,并使用一些底层函数,要么是一个模块,应该安装。

因此,唯一的选择是获取该模块的 C 代码并将其重写为 php。AFAIK是唯一需要的低级函数,它与网络套接字一起工作,它们在php中可用。

也许我的回答有点晚了,但我相信这对寻找此类问题的其他用户很有帮助。SQLite是一款特殊的软件,有时它可以取代MySQL或其他经典使用的数据库。(让我们考虑一下低流量网站。不幸的是,它可以作为PHP扩展使用,因此在依赖第三方廉价托管服务提供商时可以禁用服务器端。这就是为什么我开始开发PHPFileDB,一个用PHP编码的完整平面文件数据库,完全支持SQL语法(我的目标是获得与基于MySQL的框架的完全兼容性)

显然,它是开源的,可以在 https://github.com/morepaolo/PHPFileDB

希望对您有所帮助!

我没有在谷歌上找到任何普通的php sqlite驱动程序。我试图从梨子中得到一些东西,但 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;

所以,我认为还没有人用PHP编写纯sqlite驱动程序。不好意思。