我有一個PHP二維數組,每個都有一個值,我需要把它放到一個MySQL數據庫中。
數據庫有8個字段。例如。 Field1,Field2,Field3等
我試圖確保value1 => field1, value2 =>field2, value3 => field3
等等,當一個記錄已滿(即8個值後)應創建一個新的記錄爲接下來的8個值等等。
我知道第1,第9,第17,第26等值需要插入語句,中間值將是更新語句。PHP二維數組到MySQL數據庫
這樣做的最好方法是什麼?
我有一個PHP二維數組,每個都有一個值,我需要把它放到一個MySQL數據庫中。
數據庫有8個字段。例如。 Field1,Field2,Field3等
我試圖確保value1 => field1, value2 =>field2, value3 => field3
等等,當一個記錄已滿(即8個值後)應創建一個新的記錄爲接下來的8個值等等。
我知道第1,第9,第17,第26等值需要插入語句,中間值將是更新語句。PHP二維數組到MySQL數據庫
這樣做的最好方法是什麼?
array_chunk()是可能的答案,如果我把這個問題正確。
然後就是像這樣
foreach ($chunks as $row) {
array_map $row with mysql_real_escape_string
implode to get VALUES clause
INSERT
}
但真正陣列樣品可以節省大量的您自己和別人的時間
說,如果你想保存的鑰匙,不是值,必須先調用array_reverse。
最容易理解的是使用計數器。像:
$cc=0;
while(...){ // Whatever your finished condition is
if($cc==0){
//INSERT
}else{
//UPDATE
}
$cc++;
if($cc==8) $cc=0;
}
$records = array_chunk($yourArray);
foreach($records as $record)
{
$record = array_map("mysql_real_escape_string", $record);
$q = 'INSERT INTO `yourTable` VALUES
'.$record[0].',
'.$record[1].',
'.$record[2].',
'.$record[3].',
'.$record[4].',
'.$record[5].',
'.$record[6].',
'.$record[7].',
';
$res = mysql_query($q);
}
我有一個PHP二維數組,許多鍵,每個鍵一個值,我需要把這個變成一個MySQL數據庫。
聽起來很奇怪 - PHP不會做二維數組。只有嵌套的數組。
我知道1號,9號,17號,26號值等,都需要一個INSERT語句
我相信這意味着你沒有一個二維數組 - 你有映射到非嵌套PHP陣列的2D數據集....在這種情況下:
for ($x=0; $x<count($data)/8; $x+=8) {
$qry="INSERT INTO sometable (f1, f2, f3,f4,f5,f6,f7,f8) VALUES (";
$join='';
for ($y=0; $y<8; $y++) {
$qry.=$join . prep_val($data[$x+$y]);
$join=',';
}
mysql_query($qry);
}
(其中prep_val enloses字符串和逸出元字符)
C.
我認爲你應該保留最後一個插入行的db id,以及這一行中有多少個字段是空閒的。
這應該允許您在將新數據放入數據庫時進行適當的更新和/或插入。
對於將陣列拆分成部件,您可以使用array_slice()
array_splice()
和array_chunk()
函數。