2

所以我在将数组放入 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 按升序排列在数组的每个元素中

4

3 回答 3

0

你的代码是有效的。但似乎 $array 实际上是一个多维数组,在第一级包含 1 个键。也许var_dump($array) 在循环之前尝试一下,看看里面有什么。

或尝试盲注 for on$array[0]然后$array[0][$i]在循环中。尽管盲目编码从来都不是一件好事。

于 2012-12-19T21:45:12.360 回答
0

我想你打算做这样的事情:

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

您不能将数组直接插入 mysql,而是必须插入其每个值。

于 2012-12-19T21:46:07.450 回答
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_*因为这些函数已被弃用。

您确实应该在查询中添加错误处理(即处理查询不起作用的情况并给自己一个错误消息。

于 2012-12-19T21:56:50.803 回答