2010-01-04 2 views
0

Сообщение об ошибке:Ошибка SQL: SQL Синтаксис ошибки

SQL Error: 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 'AND domain = 'ard.qc' AND snapshot_id = 2010 AND locale = 'en_US'' at line 1

SQL запросов:

SELECT 
    entity_id, 
    content_id 
FROM collateral_cms_mapping 
WHERE entity_id IN ({$entity_ids}) 
    AND domain = '{$this->getSite()->getInternalId()}' 
    AND snapshot_id = {$this->getSnapshotDao()->getCurrentSnapshot()} 
    AND locale = '{$locale}' 

Фактическое SQL после значение заменяется и конкатенации:

SELECT 
     entity_id, 
     content_id 
    FROM 
     collateral_cms_mapping 
    WHERE 
    entity_id 
    IN 
    () 
    AND 
     domain = 'ard.qc' 
    AND 
     snapshot_id = 2009 
    AND 
     locale = 'en_US' 

Любые предложения?

+0

Что такое язык обертки, который предоставляет значения для переменных? Можете ли вы опубликовать весь запрос с измененными переменными? –

+2

Предложение должно состоять в том, чтобы предоставить фактический оператор, который производит ваша конкатенация строк/замена переменных. – sberry

+1

Я предлагаю напечатать фактический SQL-запрос, который вы используете, а не код, который его делает. Проблема будет гораздо более очевидной при рассмотрении конкретного запроса, вызывающего проблему. – Welbog

ответ

4

Какая ценность $entity_ids? Вероятно, он пуст, поэтому ваш запрос содержит IN(), что является недопустимым.

1

У вас нет необходимости конкатенировать ваши строки.

Похоже, что подготовленный запрос неисправен где-то в IN ({$entity_ids}).

Выполните эхо-строку запроса, чтобы проверить свой оператор IN.

0

Определенно посмотрите на заявление IN. Хотя я не знаком с MySQL, я не считаю, что пустое предложение IN() разрешено в DB2 или Oracle (хотя я не буду к нему прикидываться).

Смежные вопросы