SQLinfo.ru - Все о MySQL Фестиваль «Российские интернет-технологии» 2017

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 03.04.2017 13:37:04

Денис22
Участник
Зарегистрирован: 03.04.2017
Сообщений: 6

Как сделать UPDATE нескольких строк таблицы одним запросом?

Здравствуйте, друзья. Ситуация такова - есть таблица с несколькими строками и четырьмя полями (id, naimenovanie, colvo, price). В админке сайта можно редактировать значение любого поля в любой строке (например, в первой строке нужно изменить цену, в третьей - кол-во и т.д.). Подскажите, начинающему, как сделать UPDATE одним запросом правильно? При таком раскладе обновляется только последняя строка таблицы ("UPDATE neonprice SET naimenovanie='$naimenovanie', colvo='$colvo', price='$price' WHERE  id=$id"), а если узазать конкретные значения (id=1, id=2 и т.д.), то заменяется значения строк (id которых указали) значением последней строки. Пожалуйста, помогите разобрать проблему. Спасибо

Неактивен

 

#2 03.04.2017 13:42:08

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5126

Re: Как сделать UPDATE нескольких строк таблицы одним запросом?

делайте отдельный запрос для изменения каждой строки
UPDATE neonprice SET naimenovanie='$naimenovanie' WHERE  id=1
UPDATE neonprice SET price='$price' WHERE  id=3
и т.д.

Неактивен

 

#3 03.04.2017 14:53:06

Денис22
Участник
Зарегистрирован: 03.04.2017
Сообщений: 6

Re: Как сделать UPDATE нескольких строк таблицы одним запросом?

vasya написал:

делайте отдельный запрос для изменения каждой строки
UPDATE neonprice SET naimenovanie='$naimenovanie' WHERE  id=1
UPDATE neonprice SET price='$price' WHERE  id=3
и т.д.

Все равно заливает все 7 строк значением последней 8. Вот блин, что за ерунда?

Неактивен

 

#4 03.04.2017 14:55:13

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5126

Re: Как сделать UPDATE нескольких строк таблицы одним запросом?

значит что-то происходит не то
покажите какие запросы реально выполняются

Неактивен

 

#5 03.04.2017 15:07:05

Денис22
Участник
Зарегистрирован: 03.04.2017
Сообщений: 6

Re: Как сделать UPDATE нескольких строк таблицы одним запросом?

vasya написал:

значит что-то происходит не то
покажите какие запросы реально выполняются

Да в том-то и дело... Еще не соображаю нифига... Ну делал вот так

<?php
require __DIR__.'../admin-bloki/on-db.php';
if (isset($_POST['id'])) {$id = $_POST['id'];}
if (isset($_POST['perechen'])) {$perechen = $_POST['perechen'];}
if (isset($_POST['colvo'])) {$colvo = $_POST['colvo'];}
if (isset($_POST['cena'])) {$cena = $_POST['cena'];}

mysql_query("UPDATE vyveski SET perechen='$perechen', colvo='$colvo', cena='$cena' WHERE  id=1");
mysql_query("UPDATE vyveski SET perechen='$perechen', colvo='$colvo', cena='$cena' WHERE  id=2");
mysql_query("UPDATE vyveski SET perechen='$perechen', colvo='$colvo', cena='$cena' WHERE  id=3");
mysql_query("UPDATE vyveski SET perechen='$perechen', colvo='$colvo', cena='$cena' WHERE  id=4");
mysql_query("UPDATE vyveski SET perechen='$perechen', colvo='$colvo', cena='$cena' WHERE  id=5");
mysql_query("UPDATE vyveski SET perechen='$perechen', colvo='$colvo', cena='$cena' WHERE  id=6");
mysql_query("UPDATE vyveski SET perechen='$perechen', colvo='$colvo', cena='$cena' WHERE  id=7");
mysql_query("UPDATE vyveski SET perechen='$perechen', colvo='$colvo', cena='$cena' WHERE  id=8");
?>

Неактивен

 

#6 03.04.2017 15:16:57

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5126

Re: Как сделать UPDATE нескольких строк таблицы одним запросом?

у вас есть какие-то значения $perechen, $colvo, $cena
и вы во всех восьми строках обновляете данные на эти значения.

нужно менять только те значения, которые изменились
т.е. в форме поменяли значение цены у третьей строки, делаете запрос
UPDATE neonprice SET price='$price' WHERE  id=3
и т.д.

Неактивен

 

#7 03.04.2017 15:28:14

Денис22
Участник
Зарегистрирован: 03.04.2017
Сообщений: 6

Re: Как сделать UPDATE нескольких строк таблицы одним запросом?

vasya написал:

у вас есть какие-то значения $perechen, $colvo, $cena
и вы во всех восьми строках обновляете данные на эти значения.

нужно менять только те значения, которые изменились
т.е. в форме поменяли значение цены у третьей строки, делаете запрос
UPDATE neonprice SET price='$price' WHERE  id=3
и т.д.

Так, какое-то просветление пошло. Подскажите, а что делать с теми значениями которые остались без изменений? Получается что их сохранить не получится?

Неактивен

 

#8 03.04.2017 15:33:14

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5126

Re: Как сделать UPDATE нескольких строк таблицы одним запросом?

а зачем их менять, если они остались без изменений?
нет, вы конечно можете обновлять всё, но смысл?
например, у вас изменилась только цена в третьей строке, обновлять остальные поля в третьей строке и все другие строки - лишняя работа

Неактивен

 

#9 03.04.2017 16:02:27

Денис22
Участник
Зарегистрирован: 03.04.2017
Сообщений: 6

Re: Как сделать UPDATE нескольких строк таблицы одним запросом?

vasya написал:

а зачем их менять, если они остались без изменений?
нет, вы конечно можете обновлять всё, но смысл?
например, у вас изменилась только цена в третьей строке, обновлять остальные поля в третьей строке и все другие строки - лишняя работа

Да если бы заказчик понимал как менять значения в базе данных там где куплен хост, конечно проблем было бы меньше, и я бы с админкой на сайте не парился. Пока для меня сложновато, конечно. Но после того как они картинки в портфолио прислали jpg и JPG, и говорят что сами хотели бы картинки добавлять - меня уже ничего не удивляет. Огромное спасибо Вам за помощь.

p.s. Буду благодарен если скинете ссылку на адекватный мануал по MySQL. Тяжеловато учиться по интернету где все говорят о своей адекватности, а на самом деле очень много шлака и, к сожалению, мало правильно поданной информации. Еще раз спасибо и удачи.

Неактивен

 

#10 03.04.2017 16:14:50

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5126

Re: Как сделать UPDATE нескольких строк таблицы одним запросом?

самый адекватный это документация - https://dev.mysql.com/doc/refman/5.7/en/
из книжек рекомендуют Харрис, PHP/MySQL для начинающих

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson