Задать вопрос
@99-rus

Ошибка в SQL запросе WHEN THEN как исправить?

Здравствуйте! Мучаюсь уже который день, не могу понять, везде код работает адекватно, с другими данными, а тут нет...
Ошибка вот такая:
Ошибка MySQL
    You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'END), `is_updated` = (CASE `id` END), `is_order` = (CASE `id` END), `is_exist`' at line 1
    UPDATE `table` set `count` = (CASE `id` END), `is_updated` = (CASE `id` END), `is_order` = (CASE `id` END), `is_exist` = (CASE `id` END), `price` = (CASE `id` END) WHERE `id` IN () AND `deleted` = 'N'

Код вставки такой:
// Все переменные проверял, строки формируют нормально и кол-во совпадает
// То что там цифры в кавычках - тоже менял, пробовал без кавычек - не помогает!
$sqlPartRusklimatProductName .= ($sqlPartRusklimatProductName == '') ? "'{$itemName['id']}'" : ',' . "'{$itemName['id']}'";
$caseIsExist .= " WHEN '{$itemName['id']}' THEN 'Y'";
$caseIsOrder .= " WHEN '{$itemName['id']}' THEN 'N'";
$caseCount .= " WHEN '{$itemName['id']}' THEN '$count'";
$caseUpdated .= " WHEN '{$itemName['id']}' THEN 'Y'";
$casePrice .= " WHEN '{$itemName['id']}' THEN '$price'";

$updateProductRusklimat = "UPDATE `table` set `count` = (CASE `id` $caseCount END), `is_updated` = (CASE `id` $caseUpdated END), `is_order` = (CASE `id` $caseIsOrder END), `is_exist` = (CASE `id` $caseIsExist END), `price` = (CASE `id` $casePrice END) WHERE `id` IN ($sqlPartRusklimatProductName) AND `deleted` = 'N'";
db()->query($updateProductRusklimat);

Что самое интересное - в других местах работает нормально..., а в этом участке тоже работало нормально до того, как поставщик не стал что-то менять у себя, потом после изменений все работало еще некоторое время без ошибок, а потом вот, стала появляться такая ошибка... как полтергейст какой-то! Может в названии артикула какой-то кириллический символ затесался? Может из-за этого ошибка?
  • Вопрос задан
  • 143 просмотра
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Судя по обрывкам кода, первый фрагмент выполняется в цикле.
Тогда по тексту ошибки видно, что этот цикл ни разу не выполнялся и в переменных пустые строки.
Ответ написан
@99-rus Автор вопроса
Разобрался, проблема оказывается была в кол-ве страниц, которые отдавал поставщик и они не правильные, в последней странице как оказалось не было вообще товаров, вот ошибку и выдает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы