Задать вопрос
@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'
  • Вопрос задан
  • 672 просмотра
Подписаться 1 Оценить Комментировать
Решение пользователя Melkij К ответам на вопрос (1)
Melkij
@Melkij
DBA Team для вашего PostgreSQL?
При чём тут PDO, если ошибку вам отдаёт MySQL?

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

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

Что вы хотели получить этим условием?
Ответ написан