2017-03-04 92 views
0

PHP如何讓數組值獲取數組值:PHP中使用的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 
    ) 

) 
?> 

所以我想也許在foreach功能是這樣的:

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

$getID指[ID] $getTipe表示陣列中的[tipe]。

有沒有可能這樣做?

+2

我會建議你:不執行查詢N次,這取決於數組的大小。在單個查詢中插入所有數據 – Shan

回答

0

如果您的數組有100個索引,您的查詢將執行100次以插入數據。儘量避免這種操作,請參閱下面的答案,您可以在單個查詢中插入數據,代碼未經過測試,您可以根據自己的要求進行調整。

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

我希望這會節省你的數據庫操作的開銷

+0

嗨單,謝謝你的回答。嘗試了你的代碼,但它只保存,如果我只選擇1複選框。如果更多,它不保存到分貝。請指教。 –

+0

嘗試回顯「INSERT INTO TDATA(ID,CHKSTATUS)VALUES」。$ values。「」&查看完整查詢 – Shan

+0

這是我回顯時,插入TDATA(ID,CHKSTATUS)VALUES('1','create' ),('1','update'),('2','read'),('2','delete') –