这合法吗?
$string1= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
mysql_query($string1) or die(mysql_error());
答案 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)
答案 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");
因此插入与往常一样:
使用一个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());