因此,我在将数组放入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按升序放入数组的每个元素中
发布于 2012-12-20 05:56:51
需要指出的几件事:
不要调用您的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_*,因为这些函数已被弃用。
你真的应该在你的查询上添加错误处理(例如,处理查询不工作的情况,并给自己一条错误消息。
发布于 2012-12-20 05:45:12
您的代码有效。但是看起来$array实际上是一个在第一级包含1个键的多维数组。也许可以在循环之前尝试一下var_dump($array),看看里面有什么。
或者尝试在$array[0]上执行盲for,然后在循环中执行$array[0][$i]。尽管盲目编码从来都不是一件好事。
发布于 2012-12-20 05:46:07
我假设你打算做这样的事情:
VALUES('', '".$array[$i]['name']."')"您不能将数组直接插入到mysql中,而必须插入它的每个值。
https://stackoverflow.com/questions/13961696
复制相似问题