【问题标题】:Inserting multiple rows into MySql with one INSERT statement using PHP implode function使用 PHP implode 函数通过一条 INSERT 语句将多行插入 MySql
【发布时间】:2012-03-20 22:38:39
【问题描述】:

我正在尝试使用 implode 函数将多行插入 MySql 中,只使用一个 INSERT INTO 语句。从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)

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

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 行表示上述代码 sn-p 中的最后一行)。 应该进行哪些更改,以便我可以将存储在数组中的值插入 MySql 数据库?

【问题讨论】:

  • 如何使用一个名为 $sql 的字符串而不是数组来执行 $sql .= '('.$colour_id[$i].', '.$_POST['prod_id']. '), ';那么你将不会得到“数组,(1, 1),(2, 1),(3, 1)”的东西,只有“(1, 1),(2, 1),(3, 1)” btw : 如果你用这种方式,你必须删除你最后的逗号。
  • 犯了一个愚蠢的错误,因为我对 PHP 不太熟悉。我来自 Java 背景。
  • 是的,从一种语言到另一种语言的对话总是有点棘手。但是在 PHP 中你必须仔细阅读错误代码,因为它们会给你很好的提示,你的代码有什么问题。 :)

标签: php


【解决方案1】:

你的代码应该是:

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

看看第一行。

【讨论】:

  • 这里$temp有什么用?
  • 安装`$sql[]='('.$colour_id[$i].', '.$_POST['prod_id'].')';`应该是be $sql[$i]
  • $sql[] 将一个新字段附加到数组的末尾。 $sql[$i] 将字段 $i 添加到数组中,或者如果该字段已经存在,它会覆盖 $sql[$i] 中的数据,所以在这个例子中它并不重要,但在其他上下文中你可能必须选择非常仔细,你应该使用什么替代品。
【解决方案2】:

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

尝试将第一行更改为:

$sql = array();

您在那里将$sql 的第一个元素设置为一个新数组,它不会将$sql 设置为一个新数组。

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

【讨论】:

    【解决方案3】:

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

    不要忘记在将输入发送到 Mysql 之前对其进行清理。

    【讨论】:

      猜你喜欢
      • 2021-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      相关资源
      最近更新 更多