PHP «UPDATE SET WHERE» не выдает никаких ошибок, но не работает

0

мой php-код (единственная соответствующая часть):

  $sql="UPDATE 'posts' SET 'likes'='likes'+1 WHERE 'id'='$id'";

не работает. Я пытаюсь увеличить int, который по умолчанию установлен на ноль. правильный идентификатор переменной (ответ из html-формы), и функция вставки отлично работает в следующей строке. Я исследовал это в течение нескольких часов, но пришел с пустыми руками:\задавался вопросом, может ли кто-нибудь помочь мне или указать мне в правильном направлении возможного решения.

это мой запрос, выполненный в следующей строке:

$res= $mysqli->query($sql);

$ mysql - соединение с базой данных, а $ sql - фрагмент кода выше.

это таблица

  • 0
    Почему вы помещаете кавычки вокруг $id ?
  • 0
    Отбросит ли этот эффект результат? @GregSchmidt
Показать ещё 7 комментариев
Теги:
sql-update
null

1 ответ

0

Проблема заключается в разрешении NULL ваша таблица имеет для целочисленного столбца. Я бы рекомендовал не использовать NULL для целочисленного столбца. Для вашей текущей проблемы существует как минимум два способа ее решения:

  1. Используйте coalesce для выбора значения или используйте 0 если оно равно null:

    обновление сообщений set likes = coalesce (нравится, 0) + 1 где id = 10;

Демо: http://sqlfiddle.com/#!9/54d9ae/1

  1. Обновите строку, чтобы она имела значение 0.

    update posts
    set likes = 0
    where id = 10;
    

... или вы можете просто установить его на 1 с этим обновлением. Используя этот подход, вы можете снять предложение where и исправить всю таблицу, считая, что NULL неверен.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню