2012-12-19 45 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