J'ai lu toutes les réponses que je pourrais trouver sur SO avant de poster cette question. Bien que similaires, aucun ne traitait mon problème particulier (ou je ne les reconnaissais pas).MySQL Zend Framework - SQLSTATE [42000]: Erreur de syntaxe ou violation d'accès: 1064
J'ai une classe de table qui étend Zend_Db_Table_Abstract. Dans le modèle, je suis en train de retourner une seule ligne en utilisant une méthode join() et basé sur l'ID de table comme ceci:
$getCategoryResults = $this->select();
$getCategoryResults->setIntegrityCheck(false)
->from(array('c'=> 'categories', '*'))
->join(array('e' => 'events'),'c.events_idEvent = e.idEvent', array())
->where("e.idEvent = ?", $idEvent);
quand je fais écho l'objet sql, je reçois ceci:
SELECT `c`.* FROM `categories` AS `c`
INNER JOIN `events` AS `e` ON c.events_idEvent = e.idEvent
WHERE (e.idEvent = '1')
Bizarrement, si j'utilise ce format,
->where("e.idEvent = $idEvent");
ma sortie est "Où (e.idEvent = 1)". La valeur n'est pas incluse dans les ticks, mais semble fonctionner pour MySQL. Quand je lance la requête dans phpMyAdmin, je reçois ceci:
type idCategory description displayorder localStartTime events_idEvent
1 personne 1 5k course/marche 2010-02-18 23:59:59 1
2 équipe 2 5k équipe Catégorie 2010-02-18 23: 59: 591 1
ce qui est ce que je m'attendais à voir. Mais quand je lance mon application dans un navigateur, je reçois cette laideur:
SQLSTATE [42000]: Syntaxe violation d'erreur ou d'accès: 1064 Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de 'SELECT
c
. * FROMcategories
ASc
INNER JOINevents
ASe
SUR c.events_id' à la ligne 1
J'ai vérifié tous les ressource que je peux penser. Heureusement, l'awesomeness combinée des experts SOuber fera de mon dernier arrêt. : D
Vous n'avez pas mentionné la variable pageresult dans votre question initiale. Je suis content que cela ait fonctionné pour vous, parce que j'ai passé 15 bonnes minutes à essayer de voir pourquoi vous avez eu l'erreur, et je n'ai rien vu d'anormal. Habituellement, je manque des choses comme ça quand je suis fatigué. Peut-être qu'il est temps de se reposer? :) – rvdavid