Задать вопрос
@tryvols
Front-End разработчик

Почему PDO выдает ошибку?

Запрос:
SELECT * FROM `companys` 
    INNER JOIN `countrys` USING(country_id) 
    INNER JOIN `prices` ON `companys`.`company_id` = `prices`.`company_id` 
    INNER JOIN `service_description` USING(description_id) 
WHERE 
    `RU` = "1" AND 
    `companys`.`security` = "YES" AND 
    SOME( 
        SELECT `price` FROM `prices` 
            INNER JOIN `service_description` USING(description_id) 
        WHERE `service_name` = "?" 
    ) > "?"


Данные:
array(2) { [0]=> string(9) "dedic_min" [1]=> string(2) "10" }


Ошибка:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 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 '( SELECT `price` FROM `prices` INNER JOIN `service_d' at line 1'
  • Вопрос задан
  • 673 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
Melkij
@Melkij
DBA для вашего PostgreSQL?
При чём тут PDO, если ошибку вам отдаёт MySQL?

Синтаксис оператора SOME: dev.mysql.com/doc/refman/5.7/en/any-in-some-subque...
operand comparison_operator SOME (subquery)

У вас перез some ни операнда ни оператора. Парсер закономерно удивляется. Судя по месту ошибки, парсер посчитал SOME именем столбца.

Что вы хотели получить этим условием?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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