这是合法吗?多个mysql INSERT语句在一个查询中php
$string1= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
mysql_query($string1) or die(mysql_error());
这是合法吗?多个mysql INSERT语句在一个查询中php
$string1= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
mysql_query($string1) or die(mysql_error());
对于它的价值,并根据若你是相同的数据插入到 相同的表上,it's much better to insert multiple values with the one insert 例如
INSERT INTO a VALUES (1,23),(2,34),(4,33);
INSERT INTO a VALUES (8,26),(6,29);
特别感谢您参考“插入速度”页面。 – SarathChandra 2015-08-13 18:18:54
不是。它们是单独的查询,必须这样调用。
这个更好 - 它指定你将数据转储到的字段名是很重要的! – itsricky 2013-08-01 12:17:02
在一般情况下,这是有效的SQL,因为每个语句以分号结束,但PHP不允许你一次发送多个查询,以防止可能利用SQL注入攻击写得不好的脚本。
你仍然可以使用语法,如:
INSERT INTO foo VALUES ('a1', 'b1'), ('a2', 'b2');
从MySQL开发支持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");
所以插入进入正常一如既往:
用ONE插入语句快乐地插入多个值。 :)一个函数和一个循环内
复制/粘贴例子(假设$ 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());
}
}
最好避免串联。使用'implode()'。有关详细信息,请参阅此[答案](http://stackoverflow.com/a/780046/4040525)。 – 2015-12-29 16:55:35
为什么在这种情况下使用implode()是有益的?在上面的问题中,我们有正常的SQL语句。在答案中,你指向他们谈论大量文本(例如1000个大文本插入),并且在那种情况下很好地避免串联。 – 2015-12-30 00:36:38
我知道。它可以在这里使用连接。昨天我注意到了两个答案,并认为最好使用'implode()'作为一个经验法则。 – 2015-12-30 07:42:37
INSERT INTO table (a,b) VALUES (1,2), (2,3), (3,4);
我解决我的问题有关使用此方法mysqli的[我的mysqli的PHP项目运行多个查询.multi-query。](http://us2.php.net/manual/en/mysqli.multi-query.php) – 2017-02-03 16:32:58