[英]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.