从iOS应用程序发布数组,通过PHP文件在数据库中输入值


Post Array from iOS app to enter values in database via PHP File

我需要通过PHP文件在数据库表中添加值,但我在一个动态数组中有一些值,可以有一个、两个或三个以上的值,在我的iOS应用程序中单击按钮时,我使用ASIHTTPRequest通过post发送数组,但在数据库中没有输入值。我在日志NSLog(@"selected values are %@",self.arrayValue); 中获得的值

@property (nonatomic, retain) NSMutableArray *arrayValue;:

selected values are (
    1,
    2
)

我使用的是这个代码:

 request = [ASIFormDataRequest requestWithURL:url];
 [request setPostValue:Id forKey:@"userid"];
 [request setPostValue:self.arrayValue forKey:@"svalueid"];
 [request setCompletionBlock:^{

    NSString *response = [request responseString];
    response = [request responseString];
    NSLog(@"Server response: %@", response);
    // Response shows that value has been entered in DB but it shows zero in value of "svalueid" and userid get the desired value.

在我的PHP代码中:

<?php
// array for JSON response
$response = array();
//$svalueid=array();

// check for required fields
if (isset($_REQUEST['userid']) && isset($_REQUEST['svalueid'])) {
  $userid = $_REQUEST['userid'];
  $svalueid = explode(",",$_REQUEST['svalueid']);

include 'connect.php'; 
// connecting to db
$db = new DB_CONNECT();

            $result = mysql_query("SELECT userid, svalueid
            FROM users
            WHERE userid = '$userid'");

    if (mysql_num_rows($result) > 0) {

    $result = mysql_query("DELETE FROM uses WHERE userid = '$userid'");
      foreach($svalueid as $value){
$result = mysql_query("INSERT INTO users(id, userid, svalueid) VALUES('','$userid', '$value')");
                                      }
}
    else
    {
      foreach($svalueid as $value){
$result = mysql_query("INSERT INTO users(id, userid, svalueid) VALUES('','$userid', '$value')");
 }
    }

// check if row inserted or not
if ($result) {
    // successfully inserted into database
    $response["success"] = 1;
    $response["message"] = "successful.";
    // echoing JSON response
    echo json_encode($response);
} else {
    // failed to insert row
    $response["success"] = 0;
    $response["message"] = "An error occurred.";
    // echoing JSON response
    echo json_encode($response);
}

} else {
    // required field is missing
    $response["success"] = 0;
    $response["message"] = "Field's missing";
    // echoing JSON response
    echo json_encode($response);
}
?>

但是在我的DB表的svalueid字段中,这个get的值=0我对PHP了解不深。请任何人帮助我如何将数组值发送到数据库表。

我也尝试过以json格式发送数据,但能够实现它

 NSMutableDictionary *jsonDict = [[NSMutableDictionary alloc] init];
    NSMutableDictionary *tagData = [[NSMutableDictionary alloc] init];
    for(int i = 0; i < arrayValue.count; i++)
    {
        NSString *keyString = [NSString stringWithFormat:@"%i", i];
        [tagData setObject:[arrayValue objectAtIndex:i] forKey:keyString];
    }
    [jsonDict setObject:tagData forKey:@"svalueid"];

    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDict options:NSJSONWritingPrettyPrinted error:nil];
    NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
[request setPostValue:Id forKey:@"userid"];
[request setPostValue:jsonString forKey:@"svalueid"];

现在在我的控制台上,我得到了这个值NSLog(@"json json string going on server is %@",jsonString);

 json string going on server is {
  "svalueid" : {
    "0" : 1,
    "1" : 2
  }
}

请现在我不知道它是否正确,我应该如何修改我的PHP文件,请我在这方面需要帮助。如果我在代码中做错了什么,请任何人纠正它。

$svalueid是一个带有key=>值对的json字符串,因此foreach语句应该如下所示:

foreach($svalueid as $key=>$value)

而不是这个:

foreach($svalueid as $value)

查询还需要更新以正确使用$key和$value变量。我不知道这些数字在你的json字符串中代表什么,所以我不知道如何给你一个正确的查询。