Как передать в Mysql <>нескольким числам?

223
07 октября 2017, 21:47

Нужно обновить все поля mark на 0, кроме $checkboxId (5,6 и тд которые приходят). <> работает только с 1 числом. Если <>in(".$checkboxId.") так не работает. Как правильно запрос тогда сделать? ($mark = 0, $checkboxId = нескольким числам) "UPDATE task_list SET mark = '$mark' WHERE id <> (".$checkboxId.")"; Получается у меня будет обновляются все поля на 0 кроме выбранных,как сделать, что бы выбранные получали значение 1? Так наверно не получится Нельзя такой запрос как то сделать?) "UPDATE task_list SET mark = '$mark' WHERE id NOT IN(".$checkboxId.") SET mark = '1' WHERE id in(".$checkboxId.")"; Придумал решение, но думаю это как то тупо, но работает. Можно ли как то в один запрос переделать?

$q = "UPDATE task_list  
              SET mark = '0'  
              WHERE id NOT IN(".$checkboxId.")"; 
        $this->query($q); 
        $q = "UPDATE task_list  
              SET mark = '1'  
              WHERE id IN(".$checkboxId.")"; 
        $this->query($q);

Answer 1

Нужно использовать связку

<input type="hidden" name="checkbox_name" value="0"/>
<input type="checkbox" name="checkbox_name" value="1"/>

Тогда вам всегда буде приходить полный список, что изменилось на 1, а что на 0 (так как checkbox не приходит в реквесте, если он не checked => будет приходить hidden value, но а если checked => то значение checkbox)

Answer 2

В mysql !=, <> это операторы сравнения. Также в mysql есть логические операторы. В вашем случае можно использовать логический оператор AND:

Вариант №1:

...WHERE id!='5' AND id!='6';

Вариант №2:

...WHERE id<>'5' AND id<>'6';

$checkboxId_1=5;
$checkboxId_2=6;

Надежный способ будет "очистить все" а затем выставить 1 тем которым нужно.

Первый запрос (делаем всем 0):

 "UPDATE task_list SET mark = '0' WHERE id >'0' ";

Второй запрос (ставим 1 по айдишникам):

"UPDATE task_list SET mark = '$mark' WHERE id <> (".$checkboxId_1.") AND id <> (".$checkboxId_2.") ";
READ ALSO
Вывод кнопок из базы (Telegram API)

Вывод кнопок из базы (Telegram API)

Привет всемКак можно реализовать следующее?

275
Yii2 listview неправильно выводятся строки

Yii2 listview неправильно выводятся строки

Скрипт подключен к модели Userнеправильно выводятся записи, должны в дивах таких <div data-key="4"></div> , а он выводит без дивов, то есть такие...

210
Incorrect date value: &#39;&#39; for column &#39;ххх&#39; at row 1 ( 1292 )

Incorrect date value: '' for column 'ххх' at row 1 ( 1292 )

Здравствуйте! Есть таблица в БД, с типом date c разрешенным значением NULLЧерез страничку администрирования PHP пишу:

307