Выполнение SQL-запроса несколько раз

Вопрос: Мне нужно запустить этот запрос 100 раз для ввода данных в мою базу данных MySQL. ID автоматически увеличивается. Не беспокоит увеличение столбца Name. Просто нужно заполнить базу данных. Каков наилучший способ сделать это без необходимости копировать/вставлять 100 раз? "INSERT INTO 'tables'(id, name, assigned_seating, open_seating, position) VALUES ('', 'Table 1', 0, 1, '')"; Лучший ответ:

Вопрос:

Мне нужно запустить этот запрос 100 раз для ввода данных в мою базу данных MySQL. ID автоматически увеличивается. Не беспокоит увеличение столбца Name. Просто нужно заполнить базу данных. Каков наилучший способ сделать это без необходимости копировать/вставлять 100 раз?

«INSERT INTO ‘tables'(id, name, assigned_seating, open_seating, position) VALUES (», ‘Table 1’, 0, 1, »)»; Лучший ответ:

Если кто-то увидит это в будущем, это лучший ответ

public function addbatch() { for ($i = 1; $i <= 100; $i++) { $tableName = «Table » . $i; $q = «INSERT INTO ‘tables'(id, name, cap, assigned_seating, open_seating, position) VALUES (», ‘».$tableName.»‘, 10, 0, 1, »)»; $this->db->query($q); } }

вызов функции один раз. Обязательно удаляйте, когда это сделано!

Ответ №1

Вы можете сделать пакетную вставку:

insert into Table (column1, column2) VALUES (‘value 1’, ‘value2’) , (‘value3’, ‘value4’)

Вы можете делать столько строк, сколько хотите, пока вы их разделяете на comas.

Ответ №2 $vals=»; for ($i = 0; $i < 100; $i++) { $vals.=»(‘Table 1′, 0, 1, »),»; } $vals=rtrim($vals,’,’); mysqli_query($dbh, ‘INSERT INTO ‘tables'(name, assigned_seating, open_seating, position) VALUES ‘ . $vals);

предполагаемый идентификатор был автоматически увеличен, поэтому просто оставьте его вне запроса

Ответ №3

попробуй это:

DELIMITER $$ DROP PROCEDURE IF EXISTS ‘multipleInsert’ $$ CREATE PROCEDURE ‘multipleInsert'(in n int) BEGIN DECLARE cont int default 0; WHILE cont < n DO INSERT INTO ‘tables'(id, name, assigned_seating, open_seating, position) VALUES (», ‘Table 1’, 0, 1, »); set cont = cont + 1; end while; END $$ DELIMITER ;

Процедура вызова:

call multipleInsert(100); Ответ №4

Все, что вам нужно, это существующая таблица с не менее чем 100 строками. В качестве примера я буду использовать information_schema.columns:

INSERT INTO ‘tables'(id, name, assigned_seating, open_seating, position) SELECT null, ‘Table 1’, 0, 1, » FROM information_schema.columns LIMIT 100;

Демо: http://rextester.com/DMSC23853

Оцените статью
Добавить комментарий