Обновить столбец, в строках которого другой столбец имеет несколько значений

#mysql #where-in

#mysql #где-в

Вопрос:

У меня возникли проблемы с чем-то вроде этого:

 UPDATE `database` SET `col1` = 0 WHERE `col2` in (1,2,3,4);
  

Ниже приведен фактический неудачный запрос.

 Error Message:
1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@cc3.biz, sales@allservico.com)' at line 1
  

SQL:

 UPDATE `CubeCart_customer` SET `optIn1st` = 0 WHERE `email` in (markscarts@cc3.biz, sales@allservico.com);
  

Я искал в Интернете и здесь и попробовал несколько вариантов своего кода для создания запроса, но я просто не могу точно определить, где у меня сбой.

Любой свет по этому вопросу был бы высоко оценен.

Ответ №1:

Вам нужны кавычки вокруг ваших строковых значений

 UPDATE CubeCart_customer 
SET optIn1st = 0
WHERE email in ('markscarts@cc3.biz', 'sales@allservico.com');
  

Комментарии:

1. А, понятно. Значения вводятся в текстовую область на html-странице в виде адресов электронной почты, разделенных запятыми, поэтому мне придется обработать мою строку $ _POST[‘edit_group’], чтобы вставить кавычки, и попробовать это. Спасибо.

2. Это открывает дверь для SQL-инъекций. Было бы лучше и проще просто использовать подготовленные инструкции . Посмотрите руководство. Это просто, и вам больше не нужно беспокоиться о кавычках.