2017-03-04 1 views
0

PHP, wie Array-Wert erhalten:PHP Get Wert Array foreach

<?php 

print_r($_POST['cb']); 

Array 
(
[0] => Array 
    (
     [id] => 1 
     [tipe] => read 
    ) 

[1] => Array 
    (
     [id] => 1 
     [tipe] => update 
    ) 

[2] => Array 
    (
     [id] => 2 
     [tipe] => update 
    ) 

) 
?> 

Also, was ich vielleicht in foreach Funktion wie diese erhalten möchten:

foreach(...) 
{ 
    $qInsert = oci_parse("INSERT INTO TDATA(ID, CHKSTATUS) VALUES('$getID', '$getTipe')"); 
    oci_execute($qInsert); 
} 

$getID bedeutet die [id] und $getTipe bedeutet die [tipe] im Array.

Ist es möglich, so zu tun?

+2

retten könnte würde ich Ihnen vorschlagen: die Abfrage nicht N-mal ausgeführt werden, abhängig von der Größe des Arrays. fügen Sie alle Daten in einer einzigen Abfrage – Shan

Antwort

0

Wenn Ihr Array über 100 Indizes verfügt, wird Ihre Abfrage 100 Mal ausgeführt, um Daten einzufügen. Vermeiden Sie solche Operationen so viel wie möglich. Siehe die Antwort unten, Sie können Daten in einer einzigen Abfrage einfügen, der Code wird nicht getestet, Sie können ihn an Ihre Anforderungen anpassen.

$dataArray = $_POST['cb']; 
$queryData = null; 

foreach($dataArray as $data){ 

    $queryData[]="(".$data['id'].", '".$data['tipe']."')"; 

} 

$values = implode(',',$queryData); 
$qInsert = oci_parse("INSERT INTO TDATA(ID, CHKSTATUS) VALUES ".$values.""); 
oci_execute($qInsert); 

Ich hoffe, das Ihre Datenbank-Operationen Overhead

+0

Hallo Shan, danke für die Antwort. Habe deinen Code versucht, aber nur gespeichert, wenn ich nur 1 Checkbox wähle. Wenn mehr ist nicht speichern in db. Bitte um Rat. –

+0

versuchen, "INSERT INTO TDATA (ID, CHKSTATUS) VALUES" zu widerhallen. $ Values. "" & Sehen Sie die vollständige Abfrage – Shan

+0

Dies ist, wenn ich Echo, INSERT INTO TDATA (ID, CHKSTATUS) WERTE ('1', 'create'), ('1', 'update'), ('2', 'lesen'), ('2', 'löschen') –