使用PHP implode函数使用一个INSERT语句将多行插入MySql

时间:2012-03-20 22:38:40

标签: php

我正在尝试使用INSERT INTO函数将多行插入到MySql中,只有一个implode语句。它来自here

我的示例代码如下。

$sql[]=array();
$len=count($colour_id);
for($i=0;$i<$len;$i++)
{
     $sql[]='('.$colour_id[$i].', '.$_POST['prod_id'].')';
}

$l=count($sql);
foreach($sql as $temp)
{
     echo $temp;
}

echo 'insert into product_colour (colour_id, prod_id)values '.implode(',', $sql);

上面的代码只是初始化$sql数组,foreach循环遍历数组,并按如下方式显示数组的内容。

Array(1, 1)(2, 1)(3, 1)

但在回显最后一个语句(insert语句)时,它显示以下错误。

Notice: Array to string conversion in C:\wamp\www\wagafashion\ProductColour.php on line 70
insert into product_colour (colour_id, prod_id)values Array,(1, 1),(2, 1),(3, 1) 

(第70行代表上述代码段中的最后一行)。 应该进行哪些更改,以便可以将存储在数组中的值插入MySql数据库?

3 个答案:

答案 0 :(得分:8)

你的代码应该是:

$sql=array();
$len=count($colour_id);
for($i=0;$i<$len;$i++)
{
     $sql[]='('.$colour_id[$i].', '.$_POST['prod_id'].')';
}

$l=count($sql);
foreach($sql as $temp)
{
     echo $temp;
}

echo 'insert into product_colour (colour_id, prod_id)values '.implode(',', $sql);

看一下第一行。

答案 1 :(得分:1)

我在你的语句中看到一个额外的逗号(在Array和第一个(之间)。

尝试将您在那里的第一行更改为:

$sql = array();

你在那里设置了$sql的第一个元素到一个新数组,它没有将$sql设置为一个新数组。

这样,您的查询就会变为:insert into product_colour (colour_id, prod_id)values (1, 1),(2, 1),(3, 1)

答案 2 :(得分:1)

您的问题来自此代码段的第一行:您正在执行$sql[] = array();如果您想要一个良好的初始化,您应该写$sql=array();

在将输入发送到Mysql之前,请不要忘记清理输入。