У меня есть автоматически увеличенное поле в таблице голосов, где пользователь может голосовать за сообщение и за него. Если пользователь запрашивает голосование по посту, я хочу проверить таблицу, чтобы узнать, проголосовали ли они уже (вниз или вверх).
, если пользователь уже проголосовал против и вставлена запись, и на этот раз он хочет перейти к голосованию с повышением: я просто хочу обновить запись и установить статус голосования равным 1, аналогично, если пользователь запросит голосование с понижением и запись вставлена тем же пользователем, просто обновите запись и установите статус столбца. на 0.
Я написал SQL для выполнения этой работы, но он вызывает ошибку в сетевой консоли: у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса, который можно использовать около 'ОБНОВИТЬ голоса VT SET VT.vote_status =' 1 ', VT.vote_time =' 1583319756 '' в строке 8
У меня есть поиск пара примеров, но это не сработает. Я не хочу использовать sql ON DUPLICATE KEY Я прочитал его только для дублирования уникального ключа.
Я хочу проверить, совпадают ли 2 или 3 столбца с существующей записью, которую нужно вставить, а затем обновить вставку.
Как мне этого добиться?
мой код:
IF EXISTS (
SELECT * FROM $votes_table VT WHERE VT.vote_ask_id='{$Qid}'
AND VT.vote_type='{$vote_type}'
AND VT.vote_status='{$vote_down_status}'
AND VT.vote_user_id='{$CUid}'
)
UPDATE $votes_table VT SET
VT.vote_status = '{$vote_up_status}',
VT.vote_time='{$current_time}'
WHERE VT.vote_user_id = '{$CUid}'
AND VT.vote_ask_id = '{$Qid}'
ELSE INSERT INTO $votes_table(vote_ask_id,vote_type,vote_status,vote_user_id,vote_time)
VALUES('{$Qid}','{$vote_type}','{$vote_up_status}','{$CUid}','{$current_time}')