Мне нужно вставить один набор данных несколько раз, скажем n строк.
INSERT INTO MyTable VALUES ("John", 123, "US");
Можно ли вставить все n строк в один оператор SQL?
здесь n
– динамическое значение n – это ввод пользователя, как сделать запрос вставки n раз, любую идею.
$sql = "INSERT INTO `mytable` VALUES(`field1`,`field2`,`field3`) VALUES "; $count = 5; for($i=0;$i<$coutn;$i++) { $sql .= " ('john','123','us' )"; }
это правильный путь ..
Да, это можно сделать легко, он должен выглядеть примерно так:
INSERT INTO MyTable VALUES ("John", 123, "US"), ("Carl", 123, "EU"), ("Jim", 123, "FR");
Тем не менее, хорошая практика программирования указывает столбцы вашей таблицы в запросе, например:
INSERT INTO MyTable (Column1, Column2, Column3) VALUES ("John", 123, "US"), ("Carl", 123, "EU"), ("Jim", 123, "FR");
EDIT: вы можете построить свой запрос следующим образом ( for
цикла), $total
– ваш пользовательский ввод:
$sql = "INSERT INTO MyTable (Column1, Column2, Column3) VALUES"; //Build SQL INSERT query for ($i = 1; $i <= $total; $i++) { $sql .= " ($value1, $value2, $value3), "; } //Trim the last comma (,) $sql = rtrim($sql,","); //Now, the $sql var contains the complex query. $result = mysql_query($sql);
Как вы можете видеть, мы не выполняем INSERT
в цикле, а скорее строим текст запроса SQL, а затем выполняем его за один проход.