2012-04-18 85 views
4

我有一个PHP安装,没有SQLite功能作为基本安装,所以没有sqlite_ *函数可用。是否有可能使用SQLite数据库而不使用sqlite函数?

有没有PHP库(PHP代码),可以访问SQLite数据库,而无需安装任何插件到PHP?
(我不能更改服务器配置)

其实我只需要基本的支持(仅限报表)

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

+0

这个安装几岁?听起来你可以做更新你的PHP安装给我,SQLite已成为PHP核心的一部分yonks ... – DaveRandom 2012-04-18 12:00:11

+1

你有权访问'PDO'?你可以使用'phpinfo()'来检查。在字符串'sqlite'或'sqlite2'中搜索该函数的输出。 – RikkusRukkus 2012-04-18 12:06:22

+0

它是PHP5.3,但没有将SQLite模块编译进去。我无法更新它。它基本上是不可用的,因为文件系统是只读的,而SQLite-Databases没有什么意义,但是因为我只是在阅读...... - 是的,我有权访问PDO,但不能访问PDO中的sqlite或sqlite2。 – bardiir 2012-04-18 12:26:54

回答

0

我没有在google上找到任何普通的php sqlite驱动搜索。 我试图得到的东西梨但SQLite的MDB2驱动程序中进行使用SQLite PHP扩展的工作:

[email protected]:~# pear install MDB2_Driver_sqlite 
pear/MDB2_Driver_sqlite requires PHP extension "sqlite" 
No valid packages found 
install failed 

我安装了PHP-sqlite的梨模块去确定后:

[email protected]:~# 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源码包装我发现有这样的事情:

if (!function_exists('sqlite_open')) return false; 

所以,我想没有人用PHP编写的纯sqlite的司机呢。抱歉。

1

任何php库都是用纯php编写的,并且使用了一些底层函数,或者是一个应该安装的模块。

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

+1

是的,我正在寻找SQLite驱动程序的纯PHP实现:) – bardiir 2012-04-18 12:41:37

+1

使用SQLite,该库是整个事情。一个功能兼容的PHP库实现将完全重写整个项目! – Matthew 2012-04-22 02:57:12

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; 

这样做的SQLite没有这些PHP自己的sqlite的功能,所以...

+0

+1纯粹和怪异的无意识的创造力:D |好吧,这完全适合这个问题,我当然希望可以从命令行命令几乎不可用的问题推断出来。 – bardiir 2012-04-22 08:59:19

+0

这不完全是我想要的,但它是迄今为止最好的答案,并让我大声笑,所以你应该得到赏金。 – bardiir 2012-04-25 08:43:57

+0

“一切皆有可能”的道具和它的独创性。让我微笑。 – 2016-07-01 17:39:35

0

也许我有点晚了我的答案,但我敢肯定,这可以帮助其他用户寻找这样的问题。 SQLite是一个特殊的软件,有时它可以代替MySQL或其他经典的数据库。 (让我们考虑低流量的网站..) 不幸的是,它是作为PHP扩展提供的,所以当依赖第三方廉价主机提供商时可以禁用服务器端。这就是为什么我开始开发PHPFileDB,一个完整的平面文件数据库,使用PHP编写,完全支持SQL语法(我的目标是获得与基于MySQL的框架的完全兼容)

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

希望能对您有所帮助!

相关问题