PHP将变量放入mysql

时间:2019-05-10 06:24:15

标签: php mysql api

我想将json变量放入mysql中。我该怎么办?

JSON代码是由API输出的。

json视图:

Array(
    [body] => Array
        (
            [items] => Array
                (
                    [0] => Array
                        (
                            [bizesId] => 333333
                            [lon] => 00.000000
                            [lat] => 00.000000
                        )

                )

)

如果输入代码,则可以看到输出为“ 1”。

PHP代码:

$result = mysqli_query($con, "
INSERT INTO TEST (
    num,
    lon,
    lat
) VALUES (
  '5',
  'ddd',
  'fff'
)");

但是

PHP代码:

for ($i=0; $i<=5; $i++) {

  $result = mysqli_query($con, "
     INSERT INTO TEST (
         number,
         lon,
         lat
     ) VALUES (
         $html[body][items][$i][bizesid],
         $html[body][items][$i][lon],
         $html[body][items][$i][lat]
     )");
}

     if($result)
       echo "1";
     else
       echo "-1";

结果为“ -1”。我该怎么办?

2 个答案:

答案 0 :(得分:0)

插入查询中的值必须用单引号引起来。同样,数组中的键也应该用单引号引起来。

INSERT INTO TEST (
     number,
     lon,
     lat
 ) VALUES (
     '".$html['body']['items'][$i]['bizesid']."',
     '".$html['body']['items'][$i]['lon']."',
     '".$html['body']['items'][$i]['lat']."'
 )");

答案 1 :(得分:0)

1。您当前的代码对SQL INJECTION而言是开放的,因此请使用prepared statements

2。对于当前解决方案,在查询代码中使用foreach()进行修改以及检查查询是否执行?

foreach($html['body']['items'] as $arr){
    if(mysqli_query($con, "INSERT INTO TEST (`number`,`lon`,`lat`) VALUES ('". $arr['bizesid'] ."','". $arr['lon'] ."','". $arr['lat'] ."')")){
        echo "1";
    }else{
        echo mysqli_error($con);
    }
}

重要说明:- 请使用 prepared statements 来防止自己受到 SQL注入

mysqli::prepare

PDO::prepare