我有一个使用一些 php 脚本来访问 mysql 数据库的应用程序。谁能建议如何实施离线版本?我知道在应用程序中创建 SQLLite 数据库并在 Web 服务器可用时填充它很容易?真的?
当我想查询它时,是否可以使用预先存在的 php 来做到这一点?
提前致谢
HMJ
区分您所说的组件很重要 - PHP 是一种服务器端语言,旨在执行数据库查询。SQLite 是允许我们在 iOS 操作系统上进行客户端数据库管理的 iOS 框架。在 iPhone 上,您可以执行使用 PHP 生成的相同查询,但它们将使用 Objective-c 构建。有一些有用的包装器可以做到这一点,包括 FMDB。
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 库。
我不认为你可以在 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
}