我是PHP和SQL领域的一名新开发人员。到目前为止,我只完成了Objective- C编程。但是,我的一个项目要求我拥有一个在线数据库,我需要从我的应用程序访问该数据库。我打算使用该MCPKit框架来远程访问数据库,如下所示:
MCPKit
MCPConnection *db; db = [[MCPConnection alloc] initToHost:@"db.something.com" withLogin:@"someuser" usingPort:3306]; [db setPassword:@"somepass"]; NSLog(@"Connect: %d", [db connect]);
但这是行不通的,因为我联系了我的托管服务提供商,并且他们已经对其进行了设置,因此我无法从外部主机访问我的数据库(出于安全性考虑)。因此,我将不得不寻找替代方案。我唯一想到的就是在服务器上设置一个PHP脚本,该脚本将下载整个数据库并将其作为.sql文件提供给我,然后供我操作。
.sql
但是,我不知道从哪里开始。我发现您可以像这样在PHP中访问数据库:
$mysql = new MySQLi('db.something.com', 'someuser', 'somepass', 'mydb') $mysql->query("SELECT * FROM `something`");
但是,我还没有尝试过,而且我不知道如何获取此结果。
为了解决这个问题,我想知道如何访问远程数据库,并让PHP脚本将数据库作为文件发送给我,我可以在我的Cocoa应用程序中对其进行操作。
事实上,如果在运行PHP脚本可以做 内部 的可可应用程序它会更加真棒。有想法吗?
好吧,我最终这样做是这样的:
<?PHP $con = mysql_connect("db.something.com","someuser","somepass"); if (!$con){die('Could not connect: ' . mysql_error());} mysql_select_db("db", $con); $result = mysql_query("SELECT * FROM table"); if(mysql_num_rows($result)) { while($device = mysql_fetch_assoc($result)) { $devices[] = $device; } } header('Content-type: application/json'); echo json_encode($devices); mysql_close($con); ?>
一旦运行,我就可以对生成的JSON进行处理。这是一个好方法吗?
从性能(和安全性)的角度来看,下载整个数据库并进行更改后将其上载可能是没有意义的。
通常要做的是使用PHP或其他可以从iOS应用程序调用的服务器端语言设置API,然后为您执行操作。
我对它们没有经验,因此无法判断它们的完整性和健壮性,但是有现成的PHP API可以将mySQL操作转换为REST操作(如phprestsql)。也许这对您来说有用;但是请注意,您始终需要解决身份验证问题。如果您拥有具有写访问权限(或对敏感材料具有读访问权限)的API,则需要做一些事情来防止Internet上的每个人都访问该URL。
编辑: 如果只轮询一组已定义的数据,则可以使用标准PHP“查询表并在循环中输出内容”脚本(最好使用PDO),并返回json_encode()d结果,这是最简单的。
json_encode()