Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
27 / 41 / 13
Регистрация: 15.05.2013
Сообщений: 1,313

Вставка нескольких строк одним запросом

06.02.2017, 19:25. Показов 1781. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, как нужно формировать запрос к бд, чтобы вставить много строк с помощью одного запроса? Нужно вставить такие данные:
MySQL
1
array('id' => $id, 'type' => 'sometype')
Тот же вопрос интересует про удаление этих же данных одним запросом, т.е. удаление множества строк одним запросом.
Данные будут формироваться динамически. Как нужно правильно формировать массив данных в цикле перед отправкой?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.02.2017, 19:25
Ответы с готовыми решениями:

Вставка одним запросом
Люди помогите память отшибло, вот так неправильно: for ($i = 0; $i < 300; $i++){ mysqli_query($link, "INSERT INTO `articles`...

Изменение нескольких строк одним запросом
Допустим, есть таблица: 1 Благоустройство и озеленение 1 blagoustroystvo-i-ozelenenie 500 1 2 Благоустройство и озеленение 0...

Обновление нескольких строк одним запросом
Подскажите пожалуйста, как можно обновить одним запросом несколько строк в одной таблице. Сейчас пользуюсь нижеприведенным вариантом, но...

13
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
06.02.2017, 19:34
IN оператор.
0
27 / 41 / 13
Регистрация: 15.05.2013
Сообщений: 1,313
06.02.2017, 19:40  [ТС]
Скиньте пожалуйста пример кода. Наверняка у кого-то завалялся такой код при постоянной работе.
С базой данных ещё мало работал
0
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
06.02.2017, 19:42
Вставить много строк так:
MySQL
1
2
3
4
INSERT INTO table_name (`id`, `type`) VALUES
(5, 'aaa'),
(45, 'bbb'),
(317, 'ccc');
Удалить так:
MySQL
1
DELETE FROM table_name WHERE `id` IN (3, 5, 56, 345);
или так:
MySQL
1
DELETE FROM table_name WHERE `id`=3 OR `id`=5 OR `id`=56 OR `id`=345;
0
27 / 41 / 13
Регистрация: 15.05.2013
Сообщений: 1,313
06.02.2017, 19:48  [ТС]
Цитата Сообщение от Igsit Посмотреть сообщение
Вставить много строк так:
меня интересует больше вопрос формирования массива данных.
Про синтаксис запроса я знаю
0
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
06.02.2017, 20:11
Именно формирование массива Вам нужно? или формирование запроса из массива?
0
27 / 41 / 13
Регистрация: 15.05.2013
Сообщений: 1,313
06.02.2017, 20:30  [ТС]
Цитата Сообщение от Igsit Посмотреть сообщение
Именно формирование массива Вам нужно? или формирование запроса из массива?
массива с необходимыми данными
0
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
06.02.2017, 20:45
А при чём тут база данных если вам необходимо сформировать массив? или Вы что-то не так объясняете или я Вас просто не понимаю ). Насколько я Вас понял, у вас есть массив с данными, и Вам необходимо по этому массиву сформировать запрос к базе данных, а вы всё неправильно объясняете и путаете меня, или я не прав? А если я прав то покажите структуру Вашего массива
0
27 / 41 / 13
Регистрация: 15.05.2013
Сообщений: 1,313
06.02.2017, 21:08  [ТС]
Цитата Сообщение от Igsit Посмотреть сообщение
покажите структуру Вашего массива
Цитата Сообщение от phpk Посмотреть сообщение
array('id' => $id, 'type' => 'sometype')
массив примерно такой:
PHP
1
2
3
4
5
6
array(
    array('id' => $id, 'type' => 'sometype'),
    array('id' => $id, 'type' => 'sometype'),
    array('id' => $id, 'type' => 'sometype'),
    array('id' => $id, 'type' => 'sometype'),
);
т.е. на вход поступает этот массив данных, на выходе нужно сформировать запрос к базе с этими данными. Запрос к базе нужен на добавление и удаление данных

Добавлено через 2 минуты
возможно будет и такой массив:
PHP
1
2
3
4
5
6
array(
    array('id' => $id, 'type' => 'sometype', 'type2' => $type2),
    array('id' => $id, 'type' => 'sometype', 'type2' => $type2),
    array('id' => $id, 'type' => 'sometype', 'type2' => $type2),
    array('id' => $id, 'type' => 'sometype', 'type2' => $type2),
);
Добавлено через 6 минут
вернее на вход некоей функции поступает массив id пользователей.
и нужно на основе этих id сформировать вышеприведённый массив для импорта в базу
0
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
06.02.2017, 21:16
Вот так можно:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$data = array(
    array('id' => 1, 'type' => 'test1'),
    array('id' => 2, 'type' => 'test2'),
    array('id' => 3, 'type' => 'test3'),
    array('id' => 4, 'type' => 'test4'),
);
 
$sql = '';
foreach ($data as $value) {
    if ($sql != '') {$sql .= ', ';}
    $sql .= '('.$value['id'].', "'.$value['type'].'")';
}
$sql = 'INSERT INTO table_name (`id`, `type`) VALUES ' . $sql . ';';
echo $sql;
1
27 / 41 / 13
Регистрация: 15.05.2013
Сообщений: 1,313
07.02.2017, 15:30  [ТС]
PHP
1
$sql .= '('.$value['id'].', "'.$value['type'].'")';
а подскажите, в этой в какие кавычки нужно обрамлять одну единицу данных?
В этом выражении получается строка обрамляется в двойные кавычки, а id без кавычек.
Как правильно обрамлять значение, и в какие кавычки?
0
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
07.02.2017, 15:41
Цитата Сообщение от phpk Посмотреть сообщение
В этом выражении получается строка обрамляется в двойные кавычки, а id без кавычек.
В данном случае у меня id это числовое значение, поэтому его можно без ковычек, а type - строковое поэтому в кавычках, но чтобы не заморачиваться Вы можете все значения обрамлять в кавычки, это ошибкой не будет, т.е. вот так:
PHP
1
$sql .= '("'.$value['id'].'", "'.$value['type'].'")';
1
27 / 41 / 13
Регистрация: 15.05.2013
Сообщений: 1,313
07.02.2017, 15:50  [ТС]
раз уж зашёл разговор про кавычки, хотелось-бы уточнить а такая кавычка, как ` т.е. на клавише Ё, с помощью этой кавычки можно ли обрамлять значения вместо двойных кавычек?
т.е. в каких случаях нужно обрамлять в двойные, одинарные или ` ?
0
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
07.02.2017, 16:02
Цитата Сообщение от phpk Посмотреть сообщение
такая кавычка, как ` т.е. на клавише Ё
в mysql в эти кавычки нужно обрамлять имена таблиц и полей вот так например:
MySQL
1
INSERT INTO `table_name` (`id`, `type`) VALUES ...
а данные нужно обрамлять в одинарные или в двойные кавычки.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.02.2017, 16:02
Помогаю со студенческими работами здесь

Удаление одним запросом нескольких строк
Подскажите, как одним запросом удалить несколько строк? А также подскажите пожалуйста, как нужно формировать запрос для множественной...

Подсчет количества строк в нескольких таблицах одним запросом
Есть 3 таблицы с разными данными и между собой у них нет связи, т.е. поля не пересекаются. Существует к ним 3 запроса: "SELECT...

Множественная вставка одним запросом
Добрый вечер. Предположим, есть таблица вида: id, name, count. Id - первичный, автоинкрементирующийся ключ. Каким образом я могу...

Как одним запросом определить существование нескольких таблиц?
Суть вопроса заключается в том что SHOW TABLES LIKE получается применить только к одной таблице. А посылать несколько запросов не хочется,...

Поиск нескольких значений в двух таблицах одним запросом
День добрый. Не могу составить правильно запрос. Есть 2 таблицы: users и skills В них данные о пользователях и их навыки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод Сайт называется reddit: The Thinkpad X220 Tablet is the best budget school laptop period. Это. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru