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 :

Vérifier l'execution d'une requete (prepare) [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 48
    Par défaut Vérifier l'execution d'une requete (prepare)
    Bonjour ,

    Dans un précedant sujet j'avais mit vouloir vérifier si il y a des lignes lors de la récupération d'une requête ,cependant ,il semblerai que j'ai besoin dans un premier temps un peu plus que ça.En effet c'est suffisant pour un select mais pas pour un update ou delete.

    j'utilise la méthode prepare() pour mes requetes :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $connect = new PDO('mysql:host='.$serveur.';dbname='.$nom_base.'', ''.$login.'', ''.$pwd.'', $pdo_options) or die ("Impossible de se connecter à la base !");

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $query = $connect->prepare("SELECT * FROM ".$table." where moninfo= ? ");
    $query->execute(array($info));
    il n'y a pas de problème au niveau de la requête , seulement j'aimerai vérifier l’exécution de la requête ,avant j'utilisais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($rep = mysql_query($req))
    Cela me permettais de continuer si la requete était executé ,cependant avec la méthode prepare() ,la même forme ne semble pas fonctionné ,il y a-t-il un moyen de vérifier ça requête ?

    Je pense try catcher mon $connect (le PDO),mais après je ne m'y connais pas trop en try-catch donc son utilisation à l'exécution de la requête restera en second pour l'instant.

    Je cherche donc un moyen facile de vérifier le fonctionnement de ma requête.
    Merci de m'éclairer !!

  2. #2
    Membre émérite Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($query->execute(array($info)))
    retourne true si c'est ok
    false dans le cas contraire

    http://be2.php.net/manual/fr/pdostatement.execute.php
    partie "Valeurs de retour"

  3. #3
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    en fait la meilleur façon de faire reste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    include "database.php";
     
    $stmt = $pdo->prepare($query);
     
    try {
      if (!$stmt->execute())
        throw new RuntimeException("Unable to perform query $query");
    }
    catch (Exception $e) {
      Log::handle($e); // bon ça c'est perso, à toi de trouver ton loggeur
    }
    Pourquoi ? parce que si PDO est configuré avec un ATTR_ERROR_MODE à exception, PDOStatement::execute est susceptible de lancer une PDOException si la requête échoue. De plus, je trouve que cette forme harmonise assez bien la gestion des erreurs mais après, c'est à vous de voir.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 48
    Par défaut
    Oui en effet le try catch reste la meilleure des solutions mais je ne suis pas très connaisseur (à défaut) et je n'ai pas le temps de m'y mettre ,mais je vais étudier ceci sous peu (me semble indispensable).

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

Discussions similaires

  1. [Procedure stocké] Execution d'une requete
    Par duran2004 dans le forum SQL
    Réponses: 2
    Dernier message: 24/06/2005, 13h26
  2. [sgbd] [Oracle] Pb d'execution d'une requete
    Par linou dans le forum SGBD
    Réponses: 5
    Dernier message: 15/03/2005, 17h01
  3. pb d'execution d'une requete sql
    Par pit9.76 dans le forum Bases de données
    Réponses: 2
    Dernier message: 26/06/2004, 12h03
  4. Probleme d'execution d'une requete avec un Count
    Par PrinceMaster77 dans le forum ASP
    Réponses: 4
    Dernier message: 23/06/2004, 10h33
  5. [ADO] Probleme lors de l'execution d'une requete...
    Par NoisetteProd dans le forum Bases de données
    Réponses: 4
    Dernier message: 04/06/2004, 12h43

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