2012-12-19 46 views
2

所以我在將數組放入MySQL表時遇到了一些麻煩。我的目標是將數組中的一個元素放入表格的一行,但這不會發生。使用PHP和A For循環輸入MySQL表的數據

$cnt = count($array); 
for($i = 0; $i < $cnt; $i++) 
    { 
    mysql_query(" 
     INSERT INTO $groupname (id, name) 
     VALUES('', '".$array[$i]."') 
     ", $conn1); 
    } 

(id是自動遞增)

我希望這會給數組的第一個元素表中,第二行中的第二個元素的第一行等和等等。相反,我的表看起來像這樣

+----+-------+ 
| id | name | 
+----+-------+ 
| 1 | Array | 
+----+-------+ 

我假設它只是採取數組,並把整個事情是第一行。我如何防止這種情況發生?我將如何做每行一個元素?

編輯 這裏是的var_dump

array(1) { [0]=> array(5) { [0]=> string(1) "0" [1]=> string(1) "1" [2]=> string(1) "2" [3]=> string(1) "3" [4]=> string(1) "4" } } 

出於測試目的,我只是把數字0-4的陣列中的每個元素按升序排列

+2

你能的var_dump'$ array'?它看起來像它包含數組。 – Jim

+0

請共享'var_dump($ array);' –

+2

此外,最好將記錄分組到一個INSERT語句中:INSERT INTO table VALUES(NULL,「some」),(NULL,「other」),等等);' –

回答

0

有幾件事要指出:

不要調出你的id值插入。

它看起來像$array[$i]本身就是一個數組,因此請確保您使用正確的值。

您應該構建插入查詢並插入一次(請參閱下面的示例)。

$query = 'INSERT INTO ' . $groupname . ' (name) VALUES '; 
foreach($array as $item) { 
    $query .= "('". $item['name'] . "'),"; // 'name' or whatever proper item in multidimensional array is. 
} 
$query = rtrim($query, ','); 
mysql_query($query, $conn); 

你真的需要考慮使用mysqli_*功能,而不是mysql_*,因爲這些已被棄用。

你真的應該加入您的查詢的錯誤處理(即處理情況查詢不工作,並給自己的錯誤消息。

0

你的代碼是有效的。但是看起來$ array實際上是一個包含1個關鍵字的多維數組。也許在循環之前嘗試一下var_dump($array)以查看其中的內容。

或試着在$array[0]上試試,然後在循環中試試$array[0][$i]。雖然盲目編碼從來不是一件好事。

0

我想你打算做這樣的事情:

VALUES('', '".$array[$i]['name']."')" 

您不能直接插入陣列到MySQL,而不是你要插入它的每一個值。

+0

非常感謝大家,似乎現在工作。現在我只需要查看PDO的mysqli,確實意識到我正在使用已棄用的材料。感謝大家的幫助。 – Phil