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

PHP & Base de données Discussion :

Récupération statement SQL [PDO]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Par défaut Récupération statement SQL
    Bonjour,

    Avec PDO, Je cherche à récupérer la requête préparée. Juste avant l'exécution.
    Je ne vois pas vraiment comment faire...

    QQun pour me m'aider?

    Merci.

  2. #2
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    S'il n'existe pas ce que tu cherche dans la doc, c'est que ca n'existe pas...

    or je ne vois rien qui y ressemble.

    http://fr.php.net/manual/fr/class.pdostatement.php

    Tu n'a donc plus qu'a trouver ou ton Statement est construit et récuperer directement la requete passée a PDO::prepare

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    hello,
    Pour ce faire, il faudrait que tu extends pdo et pdo statment.
    Regardes dans les commentaires de la doc il y à des exemples de déposés. Sinon jte déposerai le mien.. C'est simple à faire.

    bye

  4. #4
    Membre chevronné Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Par défaut
    Re,

    Merci pour cette réponse Kaymak. Etendre PDO et PDOStatement était bien dans mon optique mais je ne vois pas comment faire pour récupérer la requête préparée et les exemples de la doc ne me parlent pas.

    Ou peut-être que je ne regarde pas au bon endroit...

  5. #5
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    La requete préparée = La requete telle que tu l'a passé a PDO:repare

    Si c'est bien ca que tu veux récuperer, il suffit d'ajouter un champ la stockant et de redéfinir la methode prepare. Puis d'ajouter une methode getRequest sur ton extends de PDOStatement

    Si dans ton esprit, requete préparée = requete avec les valeurs... ben là ca a beaucoup moins d'interet deja, on perds tout l'apport de PDO, mais il faudra que tu redéfinisse également les methodes bindParam et bindValue pour reconstruire la requete "a la main", en sachant que ca ne sera jamais la requete telle qu'elle sera passée a la base, parce que dans le cas des requetes préparées, les requetes et les valeurs sont envoyées séparément.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    La requete préparée = La requete telle que tu l'a passé a PDO:repare

    Si c'est bien ca que tu veux récuperer, il suffit d'ajouter un champ la stockant et de redéfinir la methode prepare. Puis d'ajouter une methode getRequest sur ton extends de PDOStatement

    Si dans ton esprit, requête préparée = requete avec les valeurs... ben là ca a beaucoup moins d'intérêt deja, on perds tout l'apport de PDO, mais il faudra que tu redéfinisse également les methodes bindParam et bindValue pour reconstruire la requete "a la main", en sachant que ca ne sera jamais la requete telle qu'elle sera passée a la base, parce que dans le cas des requetes préparées, les requetes et les valeurs sont envoyées séparément.
    Ouaip, perso, moi je l'avais fait au début pour pouvoir débugger mes requêtes.
    Mais bon c'était il un quelques temps maintenant et j'avoue ne plus m'en servir aujourd'hui.


    Whatever pour étendre pdo :
    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
    19
    20
    21
    22
     
    class PDOPlus extends PDO{
    	public function __construct($dsn, $username="", $password="", $driver_options=array() ){
    	   parent::__construct($dsn,$username,$password, $driver_options);
    	   $this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('PDOPlusStatement', array($this)));
    	}
    	public function prepare( $sql ){
    		return parent::prepare( $sql );
    	}
    	public function exec( $sql ){
    		return parent::exec( $sql );
    	}
    }
    class PDOPlusStatement extends PDOStatement{
    	public $dbh;
    	protected function __construct($dbh){
    		$this->dbh = $dbh;
    	}
    	public function execute(){
    		return parent::execute();
    	}
    }
    Après tu instancies du PDOPlus et pas du PDO.

    Le reste c'est à toi de l'implémenter ; )

    bye

  7. #7
    Membre chevronné Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Par défaut
    Citation Envoyé par Fladnag Voir le message
    Si dans ton esprit, requete préparée = requete avec les valeurs... ben là ca a beaucoup moins d'interet deja, on perds tout l'apport de PDO, mais il faudra que tu redéfinisse également les methodes bindParam et bindValue pour reconstruire la requete "a la main", en sachant que ca ne sera jamais la requete telle qu'elle sera passée a la base
    Ce que j'entends par requête préparée, c'est bien cela :la requête avec les valeurs. Mon but n'est pas d'usurper le rôle de PDO mais d'écrire dans un système de log toutes les requêtes envoyées vers le SGBD. (je sais que cela peut paraître étrange...)

    Citation Envoyé par Fladnag Voir le message
    dans le cas des requetes préparées, les requêtes et les valeurs sont envoyées séparément.
    Effectivement ceci pourrait me poser problème... je vais encore chercher.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupération variable SQL
    Par buseman dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/07/2010, 15h58
  2. Réponses: 2
    Dernier message: 19/08/2009, 21h39
  3. Récupération résultat SQL Loader
    Par davasm dans le forum Linux
    Réponses: 0
    Dernier message: 03/04/2009, 14h31
  4. spool: comment cacher les statements sql
    Par AlainBourgeois dans le forum PL/SQL
    Réponses: 1
    Dernier message: 10/02/2009, 15h34
  5. récupération requête SQL excel
    Par noname_971 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/02/2007, 11h44

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