2016-09-21 8 views
-2

Ich habe drei Arrays aus Eingabefeldern abgerufen (die Felder sind in einer While-Schleife).Aktualisierung Tabellenspalten mit Arrays, PHP

$act = $_POST["act"]; 
$apid = $_POST["relate"]; 
$reason = $_POST['reason']; 

Die Arrays $ act, $ apid, $ reason enthalten Werte, die für jede Spalte aktualisiert werden. zum Beispiel:

$act=(1,2,3,4,5,6); 
$apid=(303,304,305,306,307,308); 
$reason=(delivery,contract,cargo,offloading,uploading,seal); 

auf der Datenbankseite, habe ich die Tabelle ActivityProduct mit 3 Spalten, nämlich; APID, Actual, Reason. APID ist der Primärschlüssel der Tabelle. Ich möchte die Spalten Actual und Reason mit Werten aus den Arrays aktualisieren. Hier ist mein Code (das nicht funktioniert), für das Update:

$values=array('reas'=>$reason,'actu'=>$act,'ids'=>$apid); 
foreach ($values as $key) 
{ 
$update_row =mysql_query("UPDATE ActivityProduct SET Actual= '$key['actu']}',Reason='{$key['reas']}' WHERE APID='{$key['ids']}' ") 
} 

Hier ist der Fehler, den ich bin immer:

Notice: Undefined index: actu in C:\xampp\htdocs\PD\validate\save-actual.php on line 65 

Notice: Undefined index: reas in C:\xampp\htdocs\PD\validate\save-actual.php on line 65 

Notice: Undefined index: ids in C:\xampp\htdocs\PD\validate\save-actual.php on line 65 

Jede Idee, was ich falsch mache? oder wie man es funktioniert? ..... ich bin nicht so vertraut mit Arrays.

+2

Warum verwenden Sie 'foreach'? Sie haben bereits drei Werte, die in die Abfrage eingefügt werden können, warum sie in Array setzen? –

+0

@u_mulder ist korrekt und auch Ihr $ Schlüssel ist eigentlich Ihr Array-Wert. – Indrajit

+0

@u_mulder ist es möglich, dass er nur ein Beispiel zeigt und er mehrfache bekommt. Eigentlich kann nicht sagen, weil es unklar ist, Formular OP-Seite –

Antwort

0
It should be like this,remove the for loop 

    $values=array('reas'=>$reason,'actu'=>$act,'ids'=>$apid); 

    $update_row =mysql_query("UPDATE ActivityProduct SET Actual= '".$values['actu']."',Reason='".$values['reas']."' WHERE APID='".$values['ids']."'"); 
+0

Wieder fehlt die öffnende geschweifte Klammer von' Actual = $ key ['actu']} '' – RamRaider

+0

Bitte nicht verwenden String-Interpolation zum Erstellen von SQL-Abfragen, insbesondere wenn der Inhalt der Variablen vom Benutzer kommt ('$ _POST'). Es öffnet sich für SQL-Injektionen. – Jost

+0

@ RamRaider, aktualisiert die Antwort – user3040610

0

Sie $ Schlüsselvariable ist nicht Array, versuchen Sie es in Schleife zu drucken, und Sie werden sehen. Und überprüfen Sie documentation und Beispiele für foreach-Schleife damit vertraut zu sein.

Sie brauchen nicht diese Schleife wie auch immer, entfernen Schleife und versuchen, diese

$update_row =mysql_query("UPDATE ActivityProduct SET Actual= {$values['actu']},Reason='{$values['reas']}' WHERE APID='{$values['ids']}' ") 

Wenn Sie diese foreach Sie 3-mal ausgeführt werden, aktualisieren ausgeführt werden, weil Sie drei Elemente in Array.

+0

mit Ihrer Methode bekomme ich einen Fehler bei der Abfrage: Beachten Sie: Array zu String-Konvertierung – Kenn

+0

fehlt die öffnende geschweifte Klammer von 'Actual = $ values ​​['actu']}' ' – RamRaider

+0

Kenn, versuche, deine $ Werte ['actu'] zu drucken (var_dump) und dann den tatsächlichen Wert davon zu erhalten. – Paradiso