Подтвердить что ты не робот

Несколько операторов mysql INSERT в одном запросе php

Является ли это законным?

$string1= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
mysql_query($string1) or die(mysql_error()); 
4b9b3361

Ответ 2

Нет, mysql_query() позволяет только один запрос за раз.

Вы можете вставить несколько строк следующим образом:

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

Ответ 3

От 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 раз, пока у вас есть данные для вставки.

Счастливая вставка нескольких значений с помощью инструкции ONE insert.:)

Ответ 4

В общем, этот действительный SQL, поскольку каждый оператор заканчивается точкой с запятой, но PHP не позволяет отправлять более одного запроса за раз, чтобы защитить от атак SQL-инъекций, которые могут использовать плохо написанный script.

Вы все равно можете использовать синтаксис, например:

INSERT INTO foo VALUES ('a1', 'b1'), ('a2', 'b2');

Ответ 5

Пример копирования/вставки внутри функции и цикла (предположим, что $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());   

    }   
}

Ответ 6

Нет. Они являются отдельными запросами и должны быть вызваны как таковые.

Ответ 7

 INSERT INTO table (a,b) VALUES (1,2), (2,3), (3,4);

Ответ 8

// 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());