我正在尝试制作一个iOS应用程序,以检查数据库中是否存在用户(使用)电子邮件地址,是的,那么它将用户详细信息以及用于推送通知的设备令牌添加到mysql表中,这整个部分工作正常。我的问题是我想从我的php webservice文件中获得响应,如果用户不在我的数据库中,我只是不知道如何实现简单的json响应(在PHP中)以及如何在iOS中捕获它APP。我是编程的新手,所以请详细的说明对您有所帮助。我的PHP代码如下<?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'root'; $db = 'iOS'; $dbtable = 'iosuser'; $userT='user'; // Connect Database $conn = mysql_connect($dbhost,$dbuser,$dbpass) or die (mysql_error()); mysql_select_db($db, $conn) or die(mysql_error());if (isset ($_GET["deviceID"]) && isset ($_GET["email"])){ $deviceID = $_GET["deviceID"]; $email = $_GET["email"];} else { $deviceID ="fsfsfsdfsdfsdf";}//First confirm if user is already registered via website$result = mysql_query("SELECT * FROM user WHERE email='$email'",$conn);$num_rows = mysql_num_rows($result);// mysql_query($result,$conn) or die(mysql_error();if ($num_rows > 0) {// $sql = "INSERT INTO $dbtable (id, deviceID) VALUES (NULL,'$deviceID');"; $sql = "INSERT INTO $dbtable (id, deviceID) SELECT user.id, '$deviceID' FROM user where email='$email';"; $res = mysql_query($sql,$conn) or die(mysql_error()); }else { die("User Not Found");}// Insert value into DB//$sql = "INSERT INTO $dbtable (id, deviceID) VALUES (NULL,'$deviceID');";//$res = mysql_query($sql,$conn) or die(mysql_error());mysql_close($conn);if($res) {$response = array('status' => '1');} else {die("Query failed");}echo json_encode($res);exit();?>在我的iOS应用中,这是我用来将值传递到数据库的部分 NSString *strURL = [NSString stringWithFormat:@"http://172.16.1.15/ios3.php?deviceID=%@&email=%@", _dtoken.text,_email.text]; // NSLog(_email.text); NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]]; NSString *strResult = [[NSString alloc] initWithData:dataURL encoding:NSUTF8StringEncoding];这个想法是,如果我的webservice php文件say返回一个布尔值false(如果用户不在数据库中),那么我的iOS应用应捕获该错误并采取相应的措施(无论如何)。预先感谢您抽出宝贵时间来帮助您哈穆德 最佳答案 一些想法:您要将status设置为'1',这是一个字符串值,然后在解析代码时使用。通常,您将返回一个字符串值。我建议您要么返回数字值,要么返回布尔值。如果返回布尔值,则可以执行以下操作:$result = array('status' => true);然后,当您使用NSJSONSerialization解析JSON时,会得到一个布尔值NSNumber。或者,您可以将其作为数字值返回:$result = array('status' => 1);当您在Objective-C中解析它时,它将是一个整数值NSNumber。底线,使用字符串返回码是非典型的。您可以返回一个数值,也可以返回true或false(不带引号)。如果要使用单个数字代码字段,通常的惯例是返回0表示成功,然后返回多个非零值中的任何一个表示失败(以为您只能以一种方式成功,但可能由于多种原因而失败)。就我个人而言,我尝试通过具有两个字段来消除任何歧义,一个字段是布尔值success字段,另一个字段是数字errorCode字段,以便如果success是false,则应用程序可以查看然后确定失败的原因,然后采取相应措施。我什至可能还会包含一个errorCode字段,该字段以英语描述错误(例如,如果MySQL错误,请报告实际的MySQL错误消息)。隐含的是,通常不鼓励您调用errorMessage的技术。对于您的应用而言,解析和诊断问题的根源更加困难。返回指示错误性质的有效JSON。与您的紧迫问题无关的几件事:我不鼓励您使用die函数。现在已弃用,因此通常使用mysql_函数或mysqli_函数。您永远不要接受请求中提供的输入,然后将其提供给MySQL查询。例如,如果将参数传递给SQL并且使用的是PDO::,则在SQL中使用mysqli_对其进行转义之前,必须先调用mysqli_real_escape_string。或者,您可以在SQL中使用?占位符,然后手动绑定值。但是永远不要只获取请求参数并从中构建SQL语句。这可能导致无辜的错误或灾难性的SQL注入攻击。您不应该使用dataWithContentsOfURL。使用NSURLConnection方法sendAsynchronousRequest代替。您可以在Google上搜索“ sendAsynchronousRequest示例”,然后获得大量点击量。但是不要执行同步请求。关于php - 如何从PHP Web服务获取JSON bool 响应以在iOS应用中捕获,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26921051/ 10-10 06:36