簡體   English   中英

一個查詢php中有多個mysql INSERT語句

[英]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_query()只允許一個查詢。

您可以像這樣插入多行:

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

來自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");

所以插入像往常一樣正常:

  • 首先命名我們要插入新行的表名,
  • 然后在圓括號中命名列名(注意:如果要插入所有列,則不需要),
  • 接下來是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);
// 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM