繁体   English   中英

循环json数据,然后使用php发送到数据库

[英]Looping json data then send to database with php

我有这样的json数据:

myjsondata

[

{
"id_user":"31"
},

{
"id_user":"32"
},

{
"id_user":"33"
}

]

然后我用jQuery $ .post发送数据

$.post("myaction.php",
{send: myjsondata }, function(res) {


 }, "json");

然后在myaction.php中,我对json进行解码,并且我想使用foreach将数据发送到数据库:

myaction.php

$conn = mysqli_connect( "localhost","root","","mydb");

$data = json_decode($_POST['send']);

foreach($data as $row){

    $id_user = $row->id_user;

}

mysqli_query($conn, "INSERT INTO tbl_user 
(id_user) VALUES ('$id_user') ");

当我运行该代码时,数据已经插入到表中,但是数据仅使用最后一个id_user插入

tbl_user

id_user

33

我想像这样将所有数据插入表中

tbl_user

id_user

31
32
33

我怎样才能做到这一点? 谢谢

好吧,那完全是逻辑。 让我们看一下您的代码:

$conn = mysqli_connect( "localhost","root","","mydb");

$data = json_decode($_POST['send']);

foreach($data as $row){

    $id_user = $row->id_user;

}

mysqli_query($conn, "INSERT INTO tbl_user 
(id_user) VALUES ('$id_user') "); // Here is the problem!!!!

在您的foreach循环中,您将覆盖$id_user变量。 然后仅在最后插入。 所以,你可以做什么? 只需将插入查询放在foreach循环中,它将起作用。

工作解决方案:

$conn = mysqli_connect( "localhost","root","","mydb");

$data = json_decode($_POST['send']);

foreach($data as $row){

    $id_user = $row->id_user;
    mysqli_query($conn, "INSERT INTO tbl_user 
    (id_user) VALUES ('$id_user') "); 

}

您需要将查询移至for循环

$conn = mysqli_connect( "localhost","root","","mydb");

$data = json_decode($_POST['send']);

foreach($data as $row){

    $id_user = $row->id_user;

    mysqli_query($conn, "INSERT INTO tbl_user (id_user) VALUES ('$id_user') ");
}

第一:query移至foreach loop

foreach($data as $row){

    $id_user = $row->id_user;

    mysqli_query($conn, "INSERT INTO tbl_user (id_user) VALUES ('$id_user') ");
}

第二:尝试使用准备好的语句

原因:您在foreach循环中overwriting $id_user在foreach循环之后执行查询,因此$id_user仅包含最后一行的值。因此将查询移到foreach loop

myaction.php文件将如下所示。

$conn = mysqli_connect( "localhost","root","","mydb");

$data = json_decode($_POST['send']);

foreach($data as $row){

    $id_user = $row->id_user;

    mysqli_query($conn, "INSERT INTO tbl_user (id_user) VALUES ('$id_user') ");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM