Utilisation de la class d'logging active Codeigniter (v1.7.2) pour interroger une database MSSQL (DB externe, je ne contrôle pas les noms de table ou de champ)
Le code suivant:
$this->db->select('[Key Field], MemberInfo.OtherField'); $this->db->limit(10); $this->db->from('primaryTable'); $this->db->join('MemberInfo', '[Member Number] = Member_Number', 'left'); $this->db->where('[Member Number] = 573'); $this->db->where('[Incident Date] BETWEEN '. $DateStart . ' AND ' . $DateEnd);
Produit la requête suivante (qui a une erreur de syntaxe)
SELECT TOP 10 [Key Field], MemberInfo.OtherField FROM primaryTable LEFT JOIN MemberInfo ON Member Number] = Member_Number WHERE [Member Number] = '573' AND [Incident Date] BETWEEN 2012-01-01 AND 2012-07-19
Notez la clause JOIN, qui manque l'ouverture '[' sur le nom du champ
J'ai essayé d'utiliser des guillemets doubles, qui ont donné le même résultat.
Quelqu'un a des idées, est-ce un bug connu dans 1.7.2 (que je sais est vieux, travaillant à la mise à jour)?
Le problème de mise à jour est présent en 2.1.2 également
La réponse acceptée ci-dessous est également le correctif pour 2.1.2: changer la vérification de regex dans la fonction JOIN pour searchr l'ouverture [
Le problème est dans le paramètre ON
. Il n'existe pas de solution embeddede dans le framework (pas dans la version 2).
Vous avez 2 options:
Modifier le coeur de la bibliothèque active_record
Ecrivez la requête dans une string complète avec des concaténations en utilisant $ this-> db-> query () ;