我知道有可能將一個數組拆分成多個列/行,但我只是難倒了。將PHP數組插入兩列
說我們有這樣的事情.... 陣列 ( [約翰] =>藍色 [李] =>紅色 [西爾瓦] =>綠色 [保羅] =>黑
)
在我的表中,我有三列,即id,名稱,顏色。我怎樣才能插入這些元素,使我的表中的行增加(基於這個數組,它應該是4行).. 謝謝。
我知道有可能將一個數組拆分成多個列/行,但我只是難倒了。將PHP數組插入兩列
說我們有這樣的事情.... 陣列 ( [約翰] =>藍色 [李] =>紅色 [西爾瓦] =>綠色 [保羅] =>黑
)
在我的表中,我有三列,即id,名稱,顏色。我怎樣才能插入這些元素,使我的表中的行增加(基於這個數組,它應該是4行).. 謝謝。
如果你的意思是你想要的陣列插入到數據庫表,然後:
foreach($yourArr as $name => $color) {
//your insert query here
$name = mysql_real_escape_string($name);
$color = mysql_real_escape_string($color);
$sql = "INSERT INTO TABLE_NAME VALUES ('$name', '$color')";
$query = mysql_query($sql);
}
你的意思是這樣這個..
是...這就是我的意思...將嘗試此..謝謝... – foxns7 2012-02-15 07:33:02
+1是唯一的答案,利用正確的字符串格式。 – 2012-02-15 11:37:32
$counter=1;
foreach ($yourarray as $key=>$item){
?> <tr>
<td> <? echo $counter; ?></td>
<td> <? echo $key; ?></td>
<td> <? echo $item; ?></td>
</tr><?
$counter++;
}
如果您是指html表格。
嗨Ivil,謝謝你的時間......其實它是我的MySQL數據庫中的一張表,用於存儲學生標記(用顏色表示)。因此,基於該數組,該表應該有4條記錄(4個ids,4個名稱,4種顏色) - 在表格內遞增地存儲...簡單地說,最後我們應該有4行/記錄。 – foxns7 2012-02-15 07:11:41
如果您id
已經AUTO_INCREMENT這是解決方案,我用:
$data = Array ('john' => 'blue', 'lee' => 'red', 'sylva' => 'green', 'paul' => 'black');
$items = array();
foreach($data as $key => $val) $items[]="('$key', '$val')";
$sql = "insert into table (`name`,`color`) values".implode(',',$items);
echo $sql;
這是有道理的..但我有一個MySQL問題,說Column count不匹配第1行的值計數......它反映了我用來插入記錄的兩列。:(任何想法? – foxns7 2012-02-15 07:32:05
是「=」是錯誤的使用「,」而不是 – 2012-02-15 07:33:07
foreach($ data爲$ key => $ val)$ items [] =「('$ key','$ val')」; – 2012-02-15 07:33:20
$query = '';
foreach($array as $key=>$value){
$query .= "insert into table(name,color) values('".$key."','".$value."')";
}
echo $query;
作爲數組中的條目數量,您的插入查詢y將被構建,你可以觸發數據庫更新表(假設自動增加ID)
更好/最優解決方案!
<?php
$data = Array ('john' => 'blue', 'lee' => 'red', 'sylva' => 'green', 'paul' => 'black');
$sqlPart='';
foreach($data as $key => $val)
$key = mysql_real_escape_string($key);
$val = mysql_real_escape_string($val);
$sqlPart .= "('$key' , '$val'), ";
$sqlPart = rtrim($sqlPart , ', ').';';
$sql = 'INSERT INTO `table`(`name`,`color`) VALUES '.$sqlPart;
echo $sql;
?>
輸出:
INSERT INTO table
(name
,color
)VALUES
( '約翰', '藍'), ( '李', '紅'), (」 sylva','green'), ('paul','black');
這個「最佳」的解決方案缺乏所需的SQL格式。這次添加它,但你有是m礦石在未來準確。也用你的斜線 - 撇號熱潮做出了可讀的聲明。 – 2012-02-15 11:35:42
'工作得更快,mysql_real_escape_string不僅是其他功能的要求,也可以用於sql或腳本注入。基本的想法是使用數組,我做得非常好! – 2012-02-15 12:32:05
哦,請不要在沒有線索的人之後重複那種無聊的「回合」工作。還請注意mysql_real_escape_string與注入無關。它是一個字符串格式化函數,這是這裏唯一的要求,你不需要別的。沒有人在這裏談論注射 - 你可能錯誤地使用了這個功能。基本思想是給出一個可以毫無危險地使用的正確答案,不是嗎? – 2012-02-15 12:46:07
你到目前爲止嘗試了什麼(顯示更多代碼)?你想做什麼?什麼是「桌子」?數據庫表或html表? – djot 2012-02-15 06:59:08
你的意思是什麼?數據庫表或html表? – lvil 2012-02-15 07:00:56