我正试图使用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之前,不要忘记对其进行消毒。