【发布时间】:2011-04-23 17:51:26
【问题描述】:
我是 PHP 和 SQL 领域的新开发人员。到目前为止,我只做过 Objective-C 编程。然而,我的一个项目要求我有一个在线数据库,我需要从我的应用程序中访问它。我打算使用MCPKit 框架来远程访问我的数据库,如下所示:
MCPConnection *db;
db = [[MCPConnection alloc] initToHost:@"db.something.com" withLogin:@"someuser" usingPort:3306];
[db setPassword:@"somepass"];
NSLog(@"Connect: %d", [db connect]);
但这不起作用,因为我联系了我的托管服务提供商,他们已经设置好了,因此我无法从外部主机访问我的数据库(出于安全考虑)。所以,我将不得不寻找替代品。我唯一能想到的就是在我的服务器上设置一个 PHP 脚本,该脚本将下载整个数据库并将其作为 .sql 文件提供给我,然后我可以对其进行操作。
但是,我不知道从哪里开始。我发现你可以像这样在 PHP 中访问数据库:
$mysql = new MySQLi('db.something.com', 'someuser', 'somepass', 'mydb')
$mysql->query("SELECT * FROM `something`");
但是我没有尝试过这个,我不知道如何访问这个结果。
为了简化问题,我想知道如何访问远程数据库并让 PHP 脚本将数据库作为文件发送给我,我可以在我的 Cocoa 应用程序中对其进行操作。
事实上,如果运行 PHP 脚本可以在内部 Cocoa 应用程序中完成,那就更棒了。想法?
好吧,我最终这样做了:
<?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 进行处理。这是一个好方法吗?
【问题讨论】:
-
你说的是 MySQL,对吧?
-
如果它应该在线,你为什么要尝试下载整个数据库?如果它应该是在线的,那么设置一个可以从 C 应用程序访问的 API 会更有意义。
-
@prodigitalson:是的,我希望能够直接从我的应用程序中访问它。但是,我的托管服务提供商声称我不能这样做,因为他们不允许外部连接到数据库。 ://
-
@sudo 他们是对的。通过公共网络运行 mySQL 流量既慢又危险,而且您通常最终不得不为数据库用户提供比应用程序用户应有的更多权限。使用直接 mySQL 连接,您必须假设设备的用户可以操作到达服务器的 SQL 语句。
-
@sudo:您误解了..您将在远程服务器上创建一个可以访问数据库的 Web 应用程序,然后您将使用远程应用程序的 api 从数据库获取和发送信息,例如通过制作使用要存储的数据放置或发布 http 请求,或对所需的数据发出 get 请求。
标签: php mysql sql objective-c