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

FAQ Zend Framework

FAQ Zend FrameworkConsultez toutes les FAQ

Nombre d'auteurs : 16, nombre de questions : 39, dernière mise à jour : 15 juin 2021 

 
OuvrirSommaireZend_DbZend_Db_Select

Zend Framework utilise PDO pour exécuter les requêtes SQL. Il y a plusieurs méthodes simples pour lancer une requête SELECT :

Méthode 1
Sélectionnez
$select = $db->query('SELECT champ FROM table');
Méthode 2
Sélectionnez
$select = $db->select();
        $select->from('table', 'champ');

La récupération du résultat se fait de la même manière pour les deux méthodes :

 
Sélectionnez
$rows = $select->fetchAll();

$rows contient tous les résutats de la requête sous forme de tableau (Array). Il ne reste plus qu'à appeler foreach dessus.

Créé le 26 mai 2007  par Guillaume Rossolini

Lien : Comment ne plus écrire de requêtes SQL ?

Il suffit d'appeler la fonction MAX() dans la liste des champs :

Solution 1 :
Sélectionnez
$select = $db->query('SELECT MAX(champ) FROM table');
        $max = $db->fetchOne($select);
Solution 2 :
Sélectionnez
$select = $db->select();
$select->from('table', 'MAX(champ)');
        $max = $db->fetchOne($select);
Créé le 19 mai 2007  par lecra

Il est possible d'implémenter sa propre logique, mais il faut à ce moment là réécrire les méthodes en les surchargeant.

Créé le 26 mai 2007  par j.roc, Julien Pauli

Après avoir appelé la méthode fetchAll(), le résultat est placé dans un tableau PHP. Il suffit donc d'appeler la fonction PHP count() sur ce résultat pour savoir combien de tuples sont retournés par la requête.

 
Sélectionnez
$select = $db->select();
$select->from('table', 'champ');
$rows = $select->fetchAll();
        echo count($rows);
Créé le 26 mai 2007  par byc_r

Le Zend Framework, en construisant les requêtes avec Zend_Db_Select, ajoute des guillemets pour protéger les noms des tables et des champs. SQL Server 7 n'aime pas du tout ce genre de requête, il les préfère sans guillemet.

Ce code PHP :
Sélectionnez
$select = $db->select();
        $select->select("ma_table",array("colonne1") );
Est traduit en SQL :
Sélectionnez
SELECT "ma_table"."colonne1" FROM "ma_table";

La 1ère solution consiste à faire un remplacement des quotes doubles par rien avant d'exécuter la requête.

La 2ème consiste à activer l'option quoted identifier sur la table que vous souhaitez requêter dans MS SQL Server 7.

Créé le 19 mai 2007  par websurfeur

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.