2017-07-25 1 views
0

Ich habe json Daten wie folgt aus:Looping json Daten dann mit php Datenbank senden

myjsondata

[ 

{ 
"id_user":"31" 
}, 

{ 
"id_user":"32" 
}, 

{ 
"id_user":"33" 
} 

] 

dann schicke ich die Daten mit jquery $ .post

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


}, "json"); 

dann in myaction.php, dekodiere ich den JSON und ich möchte die Daten an die Datenbank mit foreach senden:

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') "); 

wenn ich, dass Code ausgeführt wird, bereits die Daten in die Tabelle eingefügt, aber die Daten nur mit der letzten ID_USER

tbl_user

id_user 

33 
eingefügt

Ich möchte, dass alle Daten wie folgt in die Tabelle eingefügt werden:

tbl_user

id_user 

31 
32 
33 

, wie kann ich das tun? Dank

+0

Ihre Abfrage in das Innere der foreach-Schleife bewegen – JYoThI

Antwort

2

Nun, das ist völlig logisch. einen Blick auf Ihren Code Lets nehmen:

$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!!!! 

In Ihrem foreach-Schleife überschreiben Sie die $id_user Variable. Dann erst am Ende einfügen. Also was kannst du tun? Setzen Sie einfach die Einfügeabfrage in die foreach-Schleife und es wird funktionieren.

Arbeitslösung:

$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') "); 

} 
+0

Dank es ist Arbeit –

+0

@MuhammadRifqiMaulaturRahman froh, dass ich helfen konnte. Vielleicht sollten Sie auch einen Blick auf http://bobby-tables.com werfen und etwas über SQL-Injection lernen. – Twinfriends

1

Sie müssen die Abfrage in der for-Schleife

$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') "); 
} 
+0

dank es Arbeit ist –

1

1. bewegen: Ihre query in Bewegen innerhalb des foreach loop

foreach($data as $row){ 

    $id_user = $row->id_user; 

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

2.: Versuchen vorbereitete Anweisung zu verwenden,

Ursache: Ihre overwriting$id_user in foreach-Schleife und Ihre QUERY nach foreach-Schleife so $id_user enthält nur letzte Zeile Wert nur Ihre Abfrage in Verschieben .so innerhalb der foreach loop

+0

dank es Arbeit ist –

1

myaction.php Datei wird so sein.

$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') "); 
}