[英]Multiple mysql INSERT statements in one query php
這合法嗎?
$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 dev支持MySQL dev論壇
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");
所以插入像往常一樣正常:
快樂插入多個值與一個插入語句。 :)
一般來說,這是有效的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);
// 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());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.