Чет запрос обновления не работает. Точнее работает, но неправильно, все никак разобраться не могу
Выводит сообщение "Good!", но в БД меняется значение vote на ноль и все.
Пробовал в таблице типы менять на varchar, int, но все бестолку.
$mysqli = new mysqli('localhost', '********', '*******', '********');
$SV4 = "UPDATE vote_statistics SET vote='6' and sum_of_ratings='6' and average_rating='6' WHERE id='1' LIMIT 1";
if(mysqli_query($mysqli, $SV4)){echo "Good!"; }else{echo "Ошибка! Не удалось обновить данные в БД!".mysqli_error($mysqli); }
SQL
MySQL-запрос на обновление строки работает некорректно.
vote='6' and sum_of_ratings='6' and average_rating='6'
Видимо работает не так, как Вы думаете. при AND тут происходит логическое "И", отсюда результат = 0.
https://ru.wikipedia.org/wiki/Конъюнкция
По запросу не совсем понятно что Вы хотели сделать. Если установить sum_of_rating тоже в 6 - есс-но так работать не будет. См. как запросом обновить несколько колонок.
https://www.w3schools.com/sql/sql_update.asp
Если при условии sum_of_ratings = '6', то очевидно условие нужно перенести в where.
ЗЫЖ Про LIKE выше бред. Как раз при возможности лучше LIKE избегать.
Видимо работает не так, как Вы думаете. при AND тут происходит логическое "И", отсюда результат = 0.
https://ru.wikipedia.org/wiki/Конъюнкция
По запросу не совсем понятно что Вы хотели сделать. Если установить sum_of_rating тоже в 6 - есс-но так работать не будет. См. как запросом обновить несколько колонок.
https://www.w3schools.com/sql/sql_update.asp
Если при условии sum_of_ratings = '6', то очевидно условие нужно перенести в where.
ЗЫЖ Про LIKE выше бред. Как раз при возможности лучше LIKE избегать.
Борян Ефимов
ЗЫЖ по ссылке фактически то, что пишет Андрей. Просто я хотел показать автору вопроса ресурс, а не конкретно его проблему. =)
UPDATE vote_statistics
SET vote = '6', sum_of_ratings = '6', average_rating = '6'
WHERE id = '1'
LIMIT 1
Если id - первичный ключ, то использовать LIMIT не имеет смысла - запись и так одна.
Согласен с предыдущим отвечающим: использовать LIKE вместо =, это абсолютная глупость, тиражируемая всяческими говнокурсами.
В MySQL производится автоматическое предобразование строка<->число, так что разницы между ='1' и =1 в данном случае нет.
SET vote = '6', sum_of_ratings = '6', average_rating = '6'
WHERE id = '1'
LIMIT 1
Если id - первичный ключ, то использовать LIMIT не имеет смысла - запись и так одна.
Согласен с предыдущим отвечающим: использовать LIKE вместо =, это абсолютная глупость, тиражируемая всяческими говнокурсами.
В MySQL производится автоматическое предобразование строка<->число, так что разницы между ='1' и =1 в данном случае нет.
Во-первых, нужно указывать базу, к которой принадлежит таблица.
Во-вторых, не понятно, какого типа поля таблицы. Они все текстовые или нет?
В-третьих, если в WHERE ставишь условие для текстового поля, то желательно использовать конструкцию типа WHERE имя_поля LIKE...,а не where имя_поля ='...' А если проверяешь числовое поле, то - WHERE имя_поля =какое-нибудь числовое значение, а не имя_поля='...'(то есть без кавычек для текста).
И внутри строки запроса тоже желательно поставить точку с запятой - "UPDATE...LIMIT 1;";
Во-вторых, не понятно, какого типа поля таблицы. Они все текстовые или нет?
В-третьих, если в WHERE ставишь условие для текстового поля, то желательно использовать конструкцию типа WHERE имя_поля LIKE...,а не where имя_поля ='...' А если проверяешь числовое поле, то - WHERE имя_поля =какое-нибудь числовое значение, а не имя_поля='...'(то есть без кавычек для текста).
И внутри строки запроса тоже желательно поставить точку с запятой - "UPDATE...LIMIT 1;";
Похожие вопросы
- Не отрабатывает вложенный MySQL запрос
- MySQL Truncate/Delete - как это работает?
- MySQL запрос интервал в 1 день
- MySQL.Задания по запросам.
- Под каким пользователем нужно работать в MySQL?
- Друзья пожалуйста скажите любой бесплатный хостинг чтобы работал и поддерживал PHP + MySQL.
- Почему так нужен mysql?
- Выполнение вложенного запроса в БД. Скалярные запросы.
- Какие вы знаете методы оптимизации времени выполнения запроса (кроме оптимизации самого запроса)?
- Помогите написать sql запросы