我有一个使用JSON解码函数创建的关联php数组。
我试图将这个数组逐行插入到我的数据库中。
值正在插入但我正在重复最后一行。
PHP
<?php
include "config.php";
$gambatch = $_POST["mydata"];
$myjson = json_decode($gambatch,true);
foreach ($myjson as $row){
//get the tweet details
$name = $row[0];
$points = $row[1];
}
$sql1 = "INSERT INTO testjson(named,points)
VALUES ('".$name."','".$points."')";
if(!mysqli_query($con, $sql1))
{
die('Error : ' . mysql_error());
}
if (!mysqli_query($con,$sql1)) {
die('Error: ' . mysqli_error($con));
}
echo '<br><br><br><br><br><br>';
echo "data added";
json解码后,Json是从php转储的另一个页面:
array(2) { [0]=> array(7) { [0]=> string(6) "dddddd" [1]=> int(0) [2]=> int(0) [3]=> int(0) [4]=> int(0) [5]=> int(0) [6]=> int(0) } [1]=> array(7) { [0]=> string(7) "fffffff" [1]=> int(0) [2]=> int(0) [3]=> int(0) [4]=> int(0) [5]=> int(0) [6]=> int(0) } }
这是完整的数组,但我只是尝试在上面的代码中插入每行中的前两个值)(最终我想插入所有,但我保持它变小,同时让它工作)。
这也是一个只有两个条目的数组,它最终将是动态的并且接受更多,因此代码需要足够灵活。我想我快到了?
我没有得到PHP错误,问题是重复的条目。它要么替换自己,要么我有一段我没有发现的循环代码。
非常感谢您的任何帮助
最后我将使用预备语句 - 使用这个危险的sql,因为它很容易模拟
答案 0 :(得分:0)
经过深入阅读后,我得到了这个工作。我也添加了预备语句插入。
<?php
include "config.php";
$gambatch = $_POST["mydata"];
$myjson = json_decode($gambatch,true);
$myLength= count($myjson);
//echo 'length is '.$myLength.'';
$query = $con->stmt_init();
for ($row = 0; $row < $myLength; $row++) {
$name = $myjson[$row][0];
$points = $myjson[$row][1];
//$sql1 = "INSERT INTO testjson(named,points)
// VALUES ('".$name."','".$points."')";
$statement = $con->prepare( "INSERT INTO testjson (named,points) VALUES (?,?) ");
$statement->bind_param('si', $name, $points);
$statement->execute();
}
//if (!mysqli_query($con,$sql1)) {
//die('Error: ' . mysqli_error($con));
//}
//echo '<br><br><br><br><br><br>';
//echo "data added";
//}
//mysqli_close($con);
$statement->close();
我已经离开了旧插件,因为它可能有助于在某处转换。
使用数组行长度作为上限需要for循环。这是使用count($ yourArray)提取的。上面是两列,可能是无限的行。
我对代码的唯一问题是我认为它可以更高效,因为我在循环内执行多次插入。如果有人可以解决,我会切换答案。