3

我有一个使用一些 php 脚本来访问 mysql 数据库的应用程序。谁能建议如何实施离线版本?我知道在应用程序中创建 SQLLite 数据库并在 Web 服务器可用时填充它很容易?真的?

当我想查询它时,是否可以使用预先存在的 php 来做到这一点?

提前致谢

HMJ

4

3 回答 3

3

区分您所说的组件很重要 - PHP 是一种服务器端语言,旨在执行数据库查询。SQLite 是允许我们在 iOS 操作系统上进行客户端数据库管理的 iOS 框架。在 iPhone 上,您可以执行使用 PHP 生成的相同查询,但它们将使用 Objective-c 构建。有一些有用的包装器可以做到这一点,包括 FMDB。

于 2012-04-18T16:33:51.583 回答
2

Kodiak PHP在 iPad 上运行。它已安装 PDO。您可以创建本地 sqlite 数据库。我用这段代码测试了它:

<?php
error_reporting(E_ALL);
$db = new PDO('sqlite:test.sql');

$n = $db->exec('DROP TABLE IF EXISTS USER');
$n = $db->exec('CREATE TABLE user (login TEXT)');
$n = $db->exec('INSERT INTO user VALUES("joe")');
$r = $db->query('SELECT * FROM user');
foreach ($r as $row) {
    echo $row['login']."\n";
}
?>

关于PH7...它只是实现了PHP语言和一些功能,它不支持所有的PHP功能和扩展。例如,PCRE 经常用于正则表达式处理。PH7确实支持它。PH7 是针对嵌入式应用程序的重写,基本上是一个功能更强大的脚本引擎,例如 Lua,但不像 Javascript 那样占用空间大。

Kodiak PHP 是一个实际的 PHP 端口。使用 phpinfo(); 看看里面有什么编译出来的,还蛮多的。

要在 iOS 应用程序中运行 SQL 脚本,您需要将 PHP 引擎编译到您的 iOS 应用程序中并让 Apple 允许它:) - Kodiak 能够做到这一点,因为 Apple 允许导出在他们的应用程序中编写的文件,但 Apple不允许将文件导入应用程序。因此,您必须使用复制/粘贴。该应用程序旨在编写和测试不运行一堆 PHP 脚本来创建应用程序的代码。

简而言之,您的问题的答案是:是的,可以在 iOS 应用程序中运行 PHP 并写入 sqlite 数据库。但是,要这样做,您需要将 PHP 库编译到您的应用程序中。为 iOS 编译 PHP 可不是件小事(我还没做过)。Kodiak 已经做到了,但我还没有找到适用于 iOS 的免费 PHP 库。

于 2013-07-26T14:03:26.120 回答
0

我不认为你可以在 iOS 上“安装”php。但是,你也可以,我不能说。

我认为更容易做的是创建一个具有相同架构和内容的本地数据库。

如果离线,则从离线数据库中提取,从实时数据库(网络)在线。

如何 ?

编写一个将扮演“模型”角色的脚本。就像在 MVC 技术中一样。您的脚本只需要处理两个数据库。由于 SQL 是 SQL,因此您的查询不会真正改变:

if(Offline){
  // Offline
  Use something similair to PDO but for SQLLite
} else {
  // Online
  Use something similair to PDO but for MySQL
}
于 2012-04-18T16:33:07.927 回答