使用PHP内爆函数通过一条INSERT语句将多行插入MySql


Inserting multiple rows into MySql with one INSERT statement using PHP implode function

我正试图使用implode函数在MySql中插入多行,其中只有一条INSERT INTO语句。它是从这里发现的。

下面是我的示例代码。

$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数据库,应该进行哪些更改?

您的代码应该是:

$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);

看看第一行。

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

试着把你的第一行改为:

$sql = array();

您所做的是将$sql的第一个元素设置为新数组,而不是将$sql设置为新阵列。

这样,您的查询应该变成:insert into product_colour (colour_id, prod_id)values (1, 1),(2, 1),(3, 1)

你的问题来自这个片段的第一行:你正在做$sql[] = array();,如果你想要一个好的初始化,你应该写$sql=array();

在将输入发送到Mysql之前,不要忘记对其进行消毒。