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

这是合法的吗?

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

对于什么是值得的,取决于是否将相同的数据插入到相同的表格中, 插入多个值比插入一个更好

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

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

你可以像这样插入多行:

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

从MySQL开发支持MySQL开发论坛

 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次。

用一个插入语句快乐地插入多个值。 🙂

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

你仍然可以使用如下语法:

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

在函数和循环内复制/粘贴示例(假设$ 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()); } } 

不是。他们是单独的查询,必须这样调用。

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