2012-02-15 72 views
0

我知道有可能將一個數組拆分成多個列/行,但我只是難倒了。將PHP數組插入兩列

說我們有這樣的事情.... 陣列 ( [約翰] =>藍色 [李] =>紅色 [西爾瓦] =>綠色 [保羅] =>黑

在我的表中,我有三列,即id,名稱,顏色。我怎樣才能插入這些元素,使我的表中的行增加(基於這個數組,它應該是4行).. 謝謝。

+2

你到目前爲止嘗試了什麼(顯示更多代碼)?你想做什麼?什麼是「桌子」?數據庫表或html表? – djot 2012-02-15 06:59:08

+0

你的意思是什麼?數據庫表或html表? – lvil 2012-02-15 07:00:56

回答

2

如果你的意思是你想要的陣列插入到數據庫表,然後:

 

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

你的意思是這樣這個..

+0

是...這就是我的意思...將嘗試此..謝謝... – foxns7 2012-02-15 07:33:02

+0

+1是唯一的答案,利用正確的字符串格式。 – 2012-02-15 11:37:32

0
$counter=1; 
foreach ($yourarray as $key=>$item){ 
    ?> <tr> 
    <td> <? echo $counter; ?></td> 
    <td> <? echo $key; ?></td> 
    <td> <? echo $item; ?></td> 

    </tr><? 
    $counter++; 
} 

如果您是指html表格。

+0

嗨Ivil,謝謝你的時間......其實它是我的MySQL數據庫中的一張表,用於存儲學生標記(用顏色表示)。因此,基於該數組,該表應該有4條記錄(4個ids,4個名稱,4種顏色) - 在表格內遞增地存儲...簡單地說,最後我們應該有4行/記錄。 – foxns7 2012-02-15 07:11:41

0

如果您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; 
+0

這是有道理的..但我有一個MySQL問題,說Column count不匹配第1行的值計數......它反映了我用來插入記錄的兩列。:(任何想法? – foxns7 2012-02-15 07:32:05

+1

是「=」是錯誤的使用「,」而不是 – 2012-02-15 07:33:07

+0

foreach($ data爲$ key => $ val)$ items [] =「('$ key','$ val')」; – 2012-02-15 07:33:20

-1
$query = ''; 
foreach($array as $key=>$value){ 
    $query .= "insert into table(name,color) values('".$key."','".$value."')"; 
} 
echo $query; 

作爲數組中的條目數量,您的插入查詢y將被構建,你可以觸發數據庫更新表(假設自動增加ID)

-1

更好/最優解決方案!

<?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 tablenamecolor)VALUES

( '約翰', '藍'), ( '李', '紅'), (」 sylva','green'), ('paul','black');

+0

這個「最佳」的解決方案缺乏所需的SQL格式。這次添加它,但你有是m礦石在未來準確。也用你的斜線 - 撇號熱潮做出了可讀的聲明。 – 2012-02-15 11:35:42

+0

'工作得更快,mysql_real_escape_string不僅是其他功能的要求,也可以用於sql或腳本注入。基本的想法是使用數組,我做得非常好! – 2012-02-15 12:32:05

+0

哦,請不要在沒有線索的人之後重複那種無聊的「回合」工作。還請注意mysql_real_escape_string與注入無關。它是一個字符串格式化函數,這是這裏唯一的要求,你不需要別的。沒有人在這裏談論注射 - 你可能錯誤地使用了這個功能。基本思想是給出一個可以毫無危險地使用的正確答案,不是嗎? – 2012-02-15 12:46:07