2010-01-04 9 views
0

Message d'erreur:erreur SQL: syntaxe SQL erreur

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

requête 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 réelle après la valeur est remplacée et concaténation de chaîne:

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' 

Des suggestions?

+0

Quel est le langage d'emballage qui fournit des valeurs pour les variables? Pouvez-vous publier l'ensemble de la requête avec des variables résolues? –

+2

Une suggestion consisterait à fournir l'instruction réelle que votre concaténation de chaîne/remplacement de variable produit. – sberry

+1

Je suggère d'imprimer la requête SQL réelle que vous exécutez plutôt que le code qui le fait. Le problème sera beaucoup plus apparent lors de l'examen de la requête spécifique à l'origine du problème. – Welbog

Répondre

4

Quelle est la valeur de $entity_ids? Il est probablement vide, donc votre requête contient IN() qui n'est pas valide.

1

Vous n'avez pas besoin de concaténer vos chaînes.

Il semble que la requête préparée est défectueuse quelque part dans le IN ({$entity_ids}).

Echo la chaîne de requête pour vérifier votre déclaration IN.

0

certainement regarder la déclaration IN. Bien que je ne connaisse pas MySQL, je ne crois pas qu'une clause IN() vide soit permise dans DB2 ou Oracle (bien que je ne le jurerai pas).