Хотелось бы узнать, почему мой SQL случай обновления не работает правильно. У меня уже есть значения:
$usrcustomerid = 110;
$search = 'face';
Ищите исправление на моем CASE в SET, потому что нет обновления, когда это SQL вызывает
SQL Код обновления
public function UpdateUserSearch($db, $usrcustomerid, $search) {
$stmt = $db->prepare(
" UPDATE usr_customer
SET search_counter = (CASE WHEN search_counter = 1 THEN 2
WHEN search_counter = 2 THEN 3
WHEN search_counter = 3 THEN 1 END),
search1 = (CASE WHEN search_counter = 1 THEN $search END),
search2 = (CASE WHEN search_counter = 2 THEN $search END),
search3 = (CASE WHEN search_counter = 3 THEN $search END)
WHERE usrcustomerid = $usrcustomerid "
);
$stmt->bindValue(':usrcustomerid', $usrcustomerid, PDO::PARAM_INT);
$stmt->bindValue(':search', $search, PDO::PARAM_STR);
$stmt->execute();
$rowAffected = $stmt->rowCount();
return $rowAffected;
}
таблица usr_customer
![1](https://i.stack.imgur.com/iRC82.png)
На приведенном ниже рисунке пользовательский search_counter настроен на один и три столбца поиска не имеют значения внутри, поэтому код, основанный на моей логике c в моем CASE, должен иметь мое значение "$ search", вставленное в "search1", и обновить search_counter с 1 до 2.
![2](https://i.stack.imgur.com/ErBsm.png)
PS Мне известно о SQL Инъекции, пожалуйста, не отвечайте с напоминанием, потому что я пытаюсь сначала заставить мой код работать.