【问题标题】:Getting empty rows in mysql when entering data into database from JSON post to PHP从 JSON 帖子到 PHP 将数据输入数据库时​​,在 mysql 中获取空行
【发布时间】:2014-04-10 04:06:20
【问题描述】:

我在 PHP 中使用带有 POST 方法的 JSON,我能够在 Xcode 中显示值,但这些值没有显示在 mySql 中。它显示空行。我认为我的 PHP 代码可能缺少某些部分。请帮帮我。

我的 Xcode 代码

- (IBAction)uploadData:(id)sender {

        NSDictionary *loginDict = [NSDictionary dictionaryWithObjectsAndKeys:
                                   self.shipmentID.text, @"name",

                                  nil];




        NSError *error;
        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:loginDict
                                                           options:0 // Pass 0 if you don't care about the readability of the generated string
                                                            error:&error];

        if (! jsonData) {
            NSLog(@"Got an error: %@", error);
        } else {
            NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
       // NSString *jsonString=@"{"username":"root","password":""}";
            NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
                NSString *post = [NSString stringWithFormat:@"json=%@", jsonString];
                //NSLog(@"fweffwr %@" , jsonString);
                NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:NO];

                [request setURL:[NSURL URLWithString:@"http://localhost/~robot/post.php"]];
                [request setHTTPMethod:@"POST"];

                [request setHTTPBody:postData];
            NSLog(@"checking %@",post);
            [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
            [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
            [request setValue:[NSString stringWithFormat:@"%d",[postData length]] forHTTPHeaderField:@"Content-Length"];
               // [[NSURLConnection alloc] initWithRequest:request delegate:self];
            [NSURLConnection connectionWithRequest:request delegate:self];
        }

    }

我的 PHP 代码

<?php
    $con=mysqli_connect("127.0.0.1","root","","PalletApp");
    if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    else
    {
        echo "Success";
    }

    $json = $_SERVER['HTTP_JSON'];
    echo "JSON: \n";
    echo "--------------\n";
    var_dump($json);
    echo "\n\n";

    $data = json_decode($json);
    echo "Array: \n";
    echo "--------------\n";
    var_dump($data);
    echo "\n\n";

    $name = $data->name;

    echo "Result: \n";
    echo "--------------\n";
    echo "Name     : ".$name; 
    $sql = "INSERT INTO sample values('$name')";
    mysqli_query($con,$sql);

    mysqli_close($con);
?>

【问题讨论】:

  • sample 表中的字段是什么,可能您正在尝试将数据输入错误的字段
  • 你有没有试过回显$name看看有没有价值?
  • 示例数据库中只有一个字段,如果我们给出 echo ,我会不知道它会显示在哪里。如果我们对 $name 的值进行硬编码,它就可以正常工作。
  • var_dump($json) 打印什么?
  • 我是 PHP 新手,不知道 PHP 回显值打印在哪里。

标签: php mysql ios json


【解决方案1】:

在编写插入查询时,请始终尝试指定字段名称。

$name = mysql_real_escape_string($name);
$sql = "INSERT INTO sample(`field_name`) values('$name')";

还可以使用mysql_real_escape_string 将日期安全地插入mysql。

【讨论】:

  • 我试过了,它没有显示任何东西。当我尝试时,行也没有添加。
  • field_name 应该是您的 mysql 表字段的名称。请让我知道您的表格有多少个字段sample
  • 我的示例数据库中只有一个字段,我用我的 mysql 表字段尝试了 field_name,但我无法打印数据。
  • 尝试使用mysql_real_escape_string
  • 我也试过 mysql_real_escape_string 但它仍然没有显示 mysql 中的数据。而不是 $name = $data->name;我试过例如 $name='999',然后这个值显示在 mysql 中。我认为问题可能出在 $data->name.
猜你喜欢
  • 1970-01-01
  • 2014-11-13
  • 1970-01-01
  • 2016-01-23
  • 2013-05-17
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多