不使用sqlite函数,能否在PHP中使用SQLite数据库?

5
我安装的 PHP 没有 SQLite 功能作为基本安装,因此没有可用的 sqlite_* 函数。
是否有一种 PHP 库(PHP 代码)可以访问 SQLite 数据库而无需安装任何插件到 PHP 中?(我不能更改服务器配置)
实际上,我只需要基本支持(仅 SELECT 语句)
基本上,我正在寻找一个纯 PHP 的 SQLite 驱动程序,就像 https://github.com/kripken/sql.js 是 SQLite 驱动程序的纯 JS 实现一样。

这个安装程序有多久了?听起来你需要更新一下PHP安装程序,SQLite已经成为PHP核心的一部分很长时间了... - DaveRandom
1
你有访问PDO的权限吗?你可以使用phpinfo()来检查。在该函数的输出中搜索字符串sqlitesqlite2 - RickN
它是PHP5.3,但没有编译SQLite模块。我无法更新它。基本上由于文件系统是只读的,所以它不可用,并且SQLite数据库也没有太多意义,但由于我只是读取... - 是的,我可以访问PDO,但不能在PDO中访问sqlite或sqlite2。 - bardiir
有100500种处理数据的方法,而不需要使用SQL。你可以在几个小时内完成所有选择操作。但你更愿意花一周时间寻找奇迹。 - Your Common Sense
@YourCommonSense 这更多是出于好奇。如果不可能/不可用,我会使用数据库服务器。我并不一定要使用SQLite,但我已经有了SQLite格式的数据,不需要以任何方式进行转换/导入/导出将是很好的选择。 - bardiir
4个回答

3

一切皆有可能

问题在于是否足够聪明来做到这一点...

我认为更好的方法是将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的方式,所以...


+1 是为了纯粹和疯狂的无意识创造力:D | 好吧,虽然这很完美地符合问题,但我真的希望人们能够从问题中推断出命令行命令几乎不可用。 - bardiir
这不完全是我想要的,但绝对是最好的答案,让我笑了,所以你应该得到奖励。 - bardiir
对于“一切皆有可能”和所有这一切的独创性表示赞赏。让我感到开心。 - Please treat your mods well.

1
任何 PHP 库都是纯 PHP 编写并使用底层功能或模块,需要安装。
因此,唯一的选项是获取该模块的 C 代码并将其重写为 PHP。据我所知,唯一需要的低级函数是与网络套接字相关的函数,并且它们在 PHP 中可用。

1
是的,我正在寻找一个纯PHP实现的SQLite驱动程序 :) - bardiir
1
使用SQLite,库就是整个东西。一个功能兼容的PHP实现库将需要完全重写整个项目! - Matthew

1
也许我的回答有点晚了,但我相信它对其他寻找此类问题答案的用户会有所帮助。SQLite是一款非常出色的软件,有时可以替代MySQL或其他经典数据库。(想想低流量网站..) 不幸的是,它作为PHP扩展程序存在,因此在依赖于第三方廉价托管提供商时可能会被服务器端禁用。这就是为什么我开始开发PHPFileDB的原因,它是一个完整的以PHP编码的平面文件数据库,并且完全支持SQL语法(我的目标是获得与基于MySQL的框架的完全兼容性)。
显然,它是开源的,可以在https://github.com/morepaolo/PHPFileDB上获取。
希望能对您有所帮助!

0

我在谷歌上搜索了,但没有找到任何纯PHP SQLite驱动程序。 我试图从pear中获取一些东西,但是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后,pear模块正常了:

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驱动程序。抱歉。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接