【问题标题】:Is it possible to use SQLite Databases with PHP without the sqlite functions?是否可以在没有 sqlite 函数的情况下将 SQLite 数据库与 PHP 一起使用?
【发布时间】:2014-02-24 20:40:02
【问题描述】:

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

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

其实我只需要基本的支持(仅限 SELECT 语句)

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

【问题讨论】:

  • 这个安装多久了?听起来您可以向我更新您的 PHP 安装,SQLite 已经成为 yonks 的 PHP 核心的一部分...
  • 您可以访问PDO 吗?您可以使用phpinfo() 进行检查。在该函数的输出中搜索字符串 sqlitesqlite2
  • 它是 PHP5.3 但没有编译到其中的 SQLite 模块。我无法更新它。它基本上不可用,因为文件系统是只读的并且 SQLite-Databases 没有多大意义,但因为我只是在阅读...... - 是的,我可以访问 PDO,但不能访问 PDO 中的 sqlite 或 sqlite2。跨度>
  • 有 100500 种方法可以在没有 SQL 的情况下处理数据。去搞清楚。您可能会在几个小时内完成所有选择。但你更愿意花一周时间寻找奇迹
  • @YourCommonSense 这更多是出于好奇。如果不可能/不可用,我将使用数据库服务器。我不一定要使用 SQLite,但我将数据作为 SQLite 获取,并且不需要以任何方式转换/导入/导出它会很棒。

标签: php sqlite


【解决方案1】:

一切皆有可能

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

我认为更好的方法是将 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 |好吧,虽然这完全是一个问题,但我当然希望人们可以从命令行命令也几乎不可用的问题中推断出。
  • 这不是我想要的,但它是迄今为止最好的答案,让我哈哈大笑,所以你应该得到赏金。
  • “一切皆有可能”的道具以及这一切的独创性。让我微笑。
【解决方案2】:

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

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

【讨论】:

  • 是的,我正在寻找 SQLite 驱动程序的纯 PHP 实现 :)
  • 使用 SQLite,库就是全部。该库的功能兼容 PHP 实现将完全重写整个项目!
【解决方案3】:

我在谷歌上没有找到任何普通的 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 之后 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 驱动程序。对不起。

【讨论】:

    【解决方案4】:

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

    显然,它是开源的,可通过https://github.com/morepaolo/PHPFileDB 访问

    希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 1970-01-01
      • 1970-01-01
      • 2011-10-25
      • 2016-01-15
      • 2012-10-14
      相关资源
      最近更新 更多