一个查询php中有多个mysql INSERT语句

时间:2009-08-20 17:15:49

标签: php mysql

这合法吗?

$string1= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
mysql_query($string1) or die(mysql_error()); 

8 个答案:

答案 0 :(得分:48)

它的价值,取决于你是否插入相同的数据 同桌,it's much better to insert multiple values with the one insert e.g。

INSERT INTO a VALUES (1,23),(2,34),(4,33);
INSERT INTO a VALUES (8,26),(6,29);

答案 1 :(得分:36)

不,mysql_query()一次只允许一个查询。

您可以像这样插入多行:

INSERT INTO table (col1, col2)
VALUES (1, 2), (3, 4), (5, 6)

答案 2 :(得分:10)

来自MySQL dev support MySQL dev forum

INSERT INTO table (artist, album, track, length) 
VALUES 
("$artist", "$album", "$track1", "$length1"), 
("$artist", "$album", "$track2", "$length2"),
("$artist", "$album", "$track3", "$length3"), 
("$artist", "$album", "$track4", "$length4"),
("$artist", "$album", "$track5", "$length5");

因此插入与往常一样:

  • 首先命名我们要插入新行的表名,
  • 然后在圆括号中命名列名称(注意:如果要插入所有列,则不需要),
  • 后跟 VALUES 键名,然后在圆括号中显示您要在上表中为新ROW插入的值,
  • 后跟 COMMA ,然后是另一对圆括号,上面提到的表格中有新行的新值
  • 只要您要插入数据,就会重复N次。

使用一个insert语句快乐插入多个值。 :)

答案 3 :(得分:2)

一般来说,这是有效的SQL,因为每个语句都以分号结尾,但PHP不允许您一次发送多个查询,以防止可能利用写得不好的脚本的SQL注入攻击。

您仍然可以使用以下语法:

INSERT INTO foo VALUES ('a1', 'b1'), ('a2', 'b2');

答案 4 :(得分:2)

在函数和循环中复制/粘贴示例(假设$ ids是一个数组)

public function duplicateItem($ids)
{
    if (isset($ids[0])){ //at least one item

        $sqlQuery = "INSERT INTO items (item_id, content) VALUES ";

        for($i=0; $i<count($ids); $i++) {

                if ($i == count($ids)-1){
                    $sqlQuery .= "(".$ids[$i][0].", '".$ids[$i][1]."');";
                }else{
                    $sqlQuery .= "(".$ids[$i][0].", '".$ids[$i][1]."'),";
                }

        }

         mysql_query($sqlQuery) or die('Error, insert query failed: '.mysql_error());   

    }   
}

答案 5 :(得分:0)

没有。它们是单独的查询,必须这样调用。

答案 6 :(得分:0)

 INSERT INTO table (a,b) VALUES (1,2), (2,3), (3,4);

答案 7 :(得分:0)

// if $data is an array       
$sqlQuery ="INSERT INTO tableName(col1, col2) VALUES ";
for($i=0; $i<count($data); $i++) {
     $sqlQuery .="(".$data[$i][0].", '".$data[$i][1]."'),";
}
$sqlQuery = rtrim($sqlQuery, ','); // Remove last comma
mysql_query($sqlQuery) or die('Error, insert query failed: '.mysql_error());