我正在尝试使用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数据库?
答案 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之前,请不要忘记清理输入。