【问题标题】:Cant insert specific row into the database PHP MySQL JSON无法将特定行插入数据库 PHP MySQL JSON
【发布时间】:2017-05-10 10:47:38
【问题描述】:

我将 json 提取到 php 对象中,并开始将来自该对象的数据放入数据库。我在 json 中有 20 个用户,每个人都成功地进入了数据库,除了一个姓 O'Carolan 的用户。我认为那个错误就在那个单引号中,关于那个。我阅读了有关 sql 注入的所有内容,并尝试了我在 stackoverflow 上找到的所有内容,但出现了类似的错误,但仍然无法正常工作。我也尝试使用 PDO 并准备好声明,但仍然无法正常工作。在这里我总是得到一个错误:你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的 ''male')' 附近使用正确的语法。此外,当从 json 打印出用户时,它会正确打印它们并且那里一切正常,只是第三个用户O'carolan 不会进入数据库。 我的 json 在http://dev.30hills.com/data.json,我的代码是:

<?php

$servername = "localhost";
$username = "root";
$password = "";
$db = "30hills";

// Create connection
$conn = new mysqli($servername, $username, $password, $db);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$json_string = 'http://dev.30hills.com/data.json';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata, false);

$elementCount  = count($obj);

for ($x = 0; $x < $elementCount; $x++) {

    $id = $obj[$x]->id;
    $firstname = $obj[$x]->firstName;       
    $surname = $obj[$x]->surname;

    //if (preg_match('/'.$special_chars.'/', $surname)){
    //  $surname = str_replace("'","",$surname);
    //}

    $age = $obj[$x]->age;
    $gender = $obj[$x]->gender;

    echo $id;
    echo " ";
    echo $firstname;
    echo " ";
    echo $surname;
    echo "<br>";


    mysqli_query($conn, "INSERT INTO user (`id`, `firstName`, `surname`, `age`, `gender`) 
                VALUES($id, '$firstname', '" . $surname . "', $age, '$gender')") 
                or die(mysqli_error($conn));

?>

【问题讨论】:

  • "O'Carolan" 存在于 JSON 中。正确地逃脱它们。
  • 是的,但是如何?我尝试了一切,我还将“O'Carolan”字符串设为“OCarolan”,但它仍然不会将他插入数据库@SougataBose
  • 双引号“O''Carolan”,您也可以查看以下答案stackoverflow.com/questions/1912095/…
  • 我也试过了,还是不行。当它打印出来时,它打印得很好,但不会插入该行@MilosNikolik
  • 我现在发现了错误。这是因为第三个用户的 json 中的 age = null 。由于年龄 @FMashiro 的空值,它不会将该行插入数据库

标签: php mysql json insert


【解决方案1】:

答案是 json 中的 age = null 不会插入到数据库中,必须将其设为可空到表中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 2017-12-31
    • 2016-09-24
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多