Задать вопрос
@T_verdisla_V
Начинающий

Почему не работает SQL запрос?

Здравствуйте, подскажите почему не работает sql запрос? Вот код с запросом:
function getProductsFromArray($itemsIds){
    global $pdo;
    try {
        $strIds = implode($itemsIds, ', ');
        $sql = "SELECT *
             FROM `products` 
             WHERE 
             id in ({$strIds})";
        $stmt = $pdo -> query($sql);
    d($stmt);
    return createSmartyRsArray($stmt);
    } catch (Exception $e) {
        exit($e->getMessage());
    }
}

Переменная $strIds в запросе написан как видеоуроке, на и без скобок фигурных и обычных он выдает ошибку одну и туже
SQLSTATE[42000]: Syntax error or access violation: 1064 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 '' at line 4
функция d($stmt) просто отладочная, но до нее дело не доходит.
В переменную $strIds ID приходят нормально.
  • Вопрос задан
  • 295 просмотров
Подписаться 1 Оценить 2 комментария
Решения вопроса 1
ewgenio
@ewgenio
Всё по чуть чуть
implode неправильный
должно быть
$strIds = implode(', ', $itemsIds);
а лучше даже (если id в таблице не int)
$strIds = "'" . implode("','", $itemsIds) . "'";
и в запросе скобки фигурные убрать можно

непонятно как при таком implode может быть
В переменную $strIds ID приходят нормально.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
1. Если начали использовать PDO - используйте его правильно: phpfaq.ru/pdo
2. Если собираете запрос руками - первое с чего нужно начинать - посмотреть на сам sql запрос.
Вставляете после $sql = die( $sql ) - и сразу многое станет понятней
Ответ написан
Ваш ответ на вопрос

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

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