在一个查询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);