在将Json文件加载到表格时出现不一致的结果

6 浏览
0 Comments

在将Json文件加载到表格时出现不一致的结果

我很难理解为什么在尝试将一个JSON文件数据插入新表时,我得到的结果是这样的。问题在于一个JSON文件可以正常工作并填充表格,而另一个JSON文件则不行。我正在使用Xampp的phpadmin,对于为什么问题还存在我一无所知。对于任何JSON文件,创建表格是可以的,但数据的插入是主要问题。

php文件:

include("dbCon.php");
$fname=$_POST['fname'];
if ($conn->connect_error) {
  die("连接失败:" . $conn->connect_error);
}
  $sql = "CREATE TABLE `".$fname."`(
  id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  title VARCHAR(255) NOT NULL,
  imgurl VARCHAR(255) NOT NULL,
  content VARCHAR(20000) NOT NULL
  )";
  if ($conn->query($sql) === TRUE) {
     echo "表格".$fname."创建成功";
  } else {
     echo "创建表格时出错:" . $conn->error;
  }
  $json = file_get_contents('../jsonFIle/'.$fname.'.json');
  $array = json_decode($json, true);
  echo var_dump($fname);
  foreach($array as $row) {
   $sql = "INSERT INTO `".$fname."`(title, imgurl, content) VALUES('".$row["title"]."', '".$row["imgurl"]."', '".$row["content"]."')";
   mysqli_query($conn, $sql);
  }
  echo var_dump($array);
$conn->close();

JSON文件: test.json

[

{

"title":"test1",

"imgurl":"test1",

"content":"test1"

},

{

"title":"test2",

"imgurl":"test2",

"content":"test2"

},

{

"title":"test3",

"imgurl":"test3",

"content":"test3"

}

]

JSON文件: newmainnews.json

[

{

"title":"NASA的创纪录的Lucy小行星任务为10月发射做准备",

"imgurl":"record.jpg",

"content":"Lucy计划于10月在佛罗里达州卡纳维拉尔角空军基地的弗洛里达联合发射联盟Atlas V火箭上发射。"

},

{

"title":"让火星变得廉价:科学家致力于改革进入红色星球的方式",

"imgurl":"mars.jpg",

"content":"本周,用肉眼观测木星变得很容易,因为它达到了夜空中最大和最亮的时刻。用望远镜观测者还将享受寻找卫星和大气带的乐趣。这颗巨大的气体行星将在今天(8月19日)达到对冲,意味着它在地球的天空中与太阳直接相对。在对冲期间,木星还将与地球的最近距离接近。该行星的视星等为-2.9,在肉眼可见范围内,超过地球天空中的任何星星,当然也包括太阳。"

},

{

"title":"木星变化中的风显示出大红斑区风速增加",

"imgurl":"jupiter.jpg",

"content":"长期以来,望远镜一直在研究木星上正在缩小的大红斑区-一个重要的风暴。与此同时,研究人员刚刚发现了这个巨大风暴中风速的巨大变化。木星绕太阳运行需要12年。在2009年至2020年的木星年中。"

}

]

对于test.json的var_dump输出:

array(3) { [0]=> array(3) { ["title"]=> string(5) "test1" ["imgurl"]=> string(5) "test1" ["content"]=> string(5) "test1" } [1]=> array(3) { ["title"]=> string(5) "test2" ["imgurl"]=> string(5) "test2" ["content"]=> string(5) "test2" } [2]=> array(3) { ["title"]=> string(5) "test3" ["imgurl"]=> string(5) "test3" ["content"]=> string(5) "test3" } }

对于newmainnews.json的var_dump输出:

array(3) { [0]=> array(3) { ["title"]=> string(74) "NASA的创纪录的Lucy小行星任务为10月发射做准备" ["imgurl"]=> string(10) "record.jpg" ["content"]=> string(130) "Lucy计划于10月在佛罗里达州卡纳维拉尔角空军基地的弗洛里达联合发射联盟Atlas V火箭上发射。" } [1]=> array(3) { ["title"]=> string(79) "让火星变得廉价:科学家致力于改革进入红色星球的方式" ["imgurl"]=> string(8) "mars.jpg" ["content"]=> string(539) "本周,用肉眼观测木星变得很容易,因为它达到了夜空中最大和最亮的时刻。用望远镜观测者还将享受寻找卫星和大气带的乐趣。这颗巨大的气体行星将在今天(8月19日)达到对冲,意味着它在地球的天空中与太阳直接相对。在对冲期间,木星还将与地球的最近距离接近。该行星的视星等为-2.9,在肉眼可见范围内,超过地球天空中的任何星星,当然也包括太阳。" } [2]=> array(3) { ["title"]=> string(71) "木星变化中的风显示出大红斑区风速增加" ["imgurl"]=> string(11) "jupiter.jpg" ["content"]=> string(327) "长期以来,望远镜一直在研究木星上正在缩小的大红斑区-一个重要的风暴。与此同时,研究人员刚刚发现了这个巨大风暴中风速的巨大变化。木星绕太阳运行需要12年。在2009年至2020年的木星年中。" } }

test.json文件可以正确填充表格,但newmainnews.json没有插入任何数据。

我怀疑JSON文件有问题。无论如何,我就像之前说的那样,完全无知,对于任何澄清或帮助我都表示感谢。

0
0 Comments

在加载Json文件到表格时出现不一致的结果可能有以下原因:

1. 数据类型不匹配:Json文件中的数据类型与表格中的数据类型不匹配,导致加载时出现错误。

解决方法:在加载之前,确保Json文件中的数据类型与表格中的数据类型匹配。

2. 数据格式错误:Json文件中的数据格式错误,导致加载时无法正确解析。

解决方法:检查Json文件的格式,确保其符合Json的语法规则。

3. 数据缺失:Json文件中的某些数据项缺失,导致加载时无法完整地插入到表格中。

解决方法:在加载之前,确保Json文件中的每个数据项都存在且完整。

4. 数据库连接错误:在连接数据库时出现错误,导致加载Json文件失败。

解决方法:检查数据库连接的配置信息,并确保数据库连接正常。

要解决加载Json文件到表格时出现不一致结果的问题,需要确保数据类型匹配、数据格式正确、数据完整性和数据库连接正常。

0
0 Comments

问题的原因是代码中存在SQL注入的漏洞。在构造SQL查询时,使用了基本的字符串拼接,导致在查询中出现了不合法的SQL语句。具体来说,JSON文件中的字符串中包含单引号(')用作撇号,当这些单引号变成查询的一部分时,就会导致SQL语句不合法。

解决方法是熟悉输入转义并确保不要盲目地将输入字符串直接放入SQL语句中。推荐使用PDO预处理语句来代替字符串拼接。如果必须使用mysqli,也可以尝试使用预处理语句。

需要进行进一步的研究,可以搜索相关主题,如“预处理语句”和“如何防止SQL注入攻击”。

作者意识到了自己的疏忽,并向提供完整答案的人表示了歉意。作者承认应该将输入字符串准备成字符串,这样就可以完全避免这个问题。

总结起来,这个问题的原因是代码中存在SQL注入漏洞,解决方法是使用预处理语句来转义输入字符串。

0