IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Db PHP Discussion :

Zend_Db_Select et SQLite3


Sujet :

Zend_Db PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Zend_Db_Select et SQLite3
    Bonjour,

    Je développe un site communautaire basé sur le Zend Framework. Je viens de passer de mysql à sqlite3, la base de données a été migrée, mais j'ai un étrange problème lorsque je tente de récupérer les données en faisant, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $select = $db->select()
    ->from('news', array('id', 'titre', 'texte', 'dateajout'))
    ->where('news.id = 5');
    J'obtiens en utilisant print_r sur le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Array ( ["news"."id"] => 5 ["news"."titre"] => Titre de la news ["news"."texte"] => corps de la news. ["news"."dateajout"] => 2007-12-19 19:35:55)
    donc, pour afficher le titre, je dois faire $news["\"news\".\"titre\""], ce qui est très inconfortable.

    Alors qu'avant, avec mysql, j'avais tout simplement comme résultat du print_r :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Array ( [id] => 5 [titre] => Titre de la news [texte] => corps de la news. [dateajout] => 2007-12-19 19:35:55)
    Je ne vois pas comment corriger ça, avez-vous une idée ?

    Merci d'avance

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Le problème plus complet
    Après avoir parcouru moultes documentations, j'ai compris que sqlite3 renvoie par défaut comme clé : le nom_de_la_table.nom_du_champ.

    Et donc, pour empêcher cela, il faut passer comme query à sqlite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    PRAGMA full_column_names = 0;
    PRAGMA short_column_names = 1;
    Là, il devrait renvoyer uniquement le nom du champ comme clé.

    Mais ça ne fonctionne pas pour ma requête sql. Après m'être cassé les neurones, j'ai finalement simplifié la requête en appliquant les PRAGMA et là miracle, ça fonctionne, mais dés que je veux faire une requête sur plusieurs tables avec jointure externe. Il me remet le nom de la table dans les clés du résultat.

    Ci-dessous, la fonction qui exécute la requête et renvoie les résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    	public function fetchAll() {
    		Zend_Loader::loadClass("Zend_Db_Select");
    		$db = Zend_Registry::get("dbAdapter");
    		$db->query("PRAGMA full_column_names = 1");
    		$db->query("PRAGMA short_column_names = 0");	
    		$select = $db->select()
    			->from('news', array('news.id', 'titre', 'texte', 'dateajout'))
    			->from('users','username')
    			->joinLeft('commentnews', 'news.id = commentnews.idnews', 'COUNT(DISTINCT commentnews.id) as nbcomments')
    			->joinLeft('historique_news','news.id = historique_news.idnews',"MAX(datemaj) as datemaj")
    			->group('news.id')
    			->where('news.iduser = users.id')
    			->order('news.dateajout DESC');
    		$stmt = $db->query($select);
    		$result = $stmt->fetchAll();
    		return $result;
    	}
    La question est donc, est-ce normal ? Si oui, est-ce contournable, si non où se trouve le problème ?

    Pour information, j'ai bien vérifié que les pragma étaient correct dans ma db et j'utilise la dernière version de wamp.

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/07/2007, 11h38
  2. serveur TCP/IP sqlite3 ?
    Par bibifoc dans le forum SQLite
    Réponses: 2
    Dernier message: 20/05/2007, 14h07
  3. Stocker des dates dans sqlite3: quel format?
    Par GDaniel dans le forum Général Python
    Réponses: 3
    Dernier message: 12/05/2007, 15h20
  4. sqlite3.dll dans Visual Studio 2005 ?
    Par Luke58 dans le forum SQLite
    Réponses: 5
    Dernier message: 02/03/2007, 15h58
  5. [sqlite3] Pb de select
    Par Joker-eph dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/02/2006, 18h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo