php 每个循环插入数据两次,而不是按预期插入每一行

标签 php mysql arrays json

我有一个使用 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 解码后从 php 转储时,Json 来自另一个页面,如下所示:

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,因为它很容易模拟

最佳答案

经过进一步阅读后,我得到了这个工作。我还添加了准备好的语句插入。

<?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) 提取的。上面是两列和可能无限的行。

我对代码的唯一问题是我认为它可以更有效,因为我在循环内执行多次插入。如果有人能解决这个问题,我会改变答案。

关于php 每个循环插入数据两次,而不是按预期插入每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31278988/

相关文章:

java - 如何在新线程中创建数组的副本

php - 使用 javascript 在不同的表单字段中显示 2 个不同的 MySQL 结果

php - 在 PHP 中获取最后添加的数组项的键的最佳方法是什么?

mysql - 子查询返回多列

Java Hibernate 为什么namedQuery上的executeUpdate首先执行全表更新?

javascript - AngularJS 中嵌套复选框的编程检查/检查

c - 数据类型错误 - 求两个数组并集的程序 (c)

javascript - 读取通过 Ajax 调用发送的 PHP 中的 json 数据

php - 如何使 file_get_contents session 感知?

php - 检查电子邮件是唯一的 php