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

Bibliothèques et frameworks PHP Discussion :

[PEAR][DB] Requête dans une base


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 231
    Points : 73
    Points
    73
    Par défaut [PEAR][DB] Requête dans une base
    Bonjour à tous, j'essaye d'utiliser PEAR dans mes pages et j'ai un problème avec le code suivant

    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
    23
     
    set_include_path(get_include_path() . ";D:\Program Files\EasyPHP1-7\php\PEAR");
    $user = 'root';
    $passwd = '';
    $mysqlServer = 'localhost';
    $dataBaseName ='example';
    require_once 'DB.php';
    $dsn ='mysql://'.$user.':'.$passwd.'@'.$mysqlServer.'/'.$dataBaseName;
    $db =& DB::connect($dsn);
     
    if (PEAR::isError($db)) {
        die($db->getMessage());
    }
    else
        echo 'connecté';
     
    $stmt = 'select * from authentification where login='.$login.' and psw='.md5($psw);
    $res = DB_common::query($stmt);
    echo $res->numRows();
    // Always check that result is not an error
    if (PEAR::isError($res)) {
        die($res->getMessage());
    }

    Et voici l'erreur :
    connecté
    Fatal error: Call to undefined function: simplequery() in D:\Program Files\EasyPHP1-7\php\pear\DB\common.php on line 1161


    Est-ce que quelqu'un peut m'aider?

    Merci beaucoup.

  2. #2
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    Salut,

    vu que tu as créé une instance de DB, pourquoi n'utilises-tu pas cet objet pour lancer tes requêtes?

    Remplace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $res = DB_common::query($stmt);
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $res = $db->query($stmt);

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 231
    Points : 73
    Points
    73
    Par défaut
    j'ai remplacé le code et ça marche . Merci beaucoup.

    Mais j'ai un autre problème , faut-il toujours se connecter à la base et créer une instance de $db pour executer une requete?
    Pour mieux expliquer, voici mon exemple:
    si j'utilise le code suivant dans index.php, il n'y a pas d'erreur
    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
     
            set_include_path(get_include_path() . ";D:\Program Files\EasyPHP1-7\php\PEAR");
            $user = 'root';
            $passwd = '';
            $mysqlServer = 'localhost';
            $dataBaseName ='example';
            require_once 'DB.php';
            $dsn ='mysql://'.$user.':'.$passwd.'@'.$mysqlServer.'/'.$dataBaseName;
            $db =& DB::connect($dsn);
            if (DB::isError($db)) {
            die($db->getMessage());}
     
            $stmt = 'select * from authentification where login='."'".$login."'".' and psw='."'".md5($psw)."'";
            $res = $db -> query($stmt);
            // Always check that result is not an error
            while ($res->fetchInto($row)) {
                // En supposant que le mode par défaut de DB est DB_FETCHMODE_ORDERED
                echo $row[0] . "\n";
            }
            if (PEAR::isError($res)) {
                die($res->getMessage());
            }
    Par contre, si je sépare la page de connexion et la page de requete , il y a une erreur.
    Voici la page connexion.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        set_include_path(get_include_path() . ";D:\Program Files\EasyPHP1-7\php\PEAR");
        $user = 'root';
        $passwd = '';
        $mysqlServer = 'localhost';
        $dataBaseName ='example';
        require_once 'DB.php';
        $dsn ='mysql://'.$user.':'.$passwd.'@'.$mysqlServer.'/'.$dataBaseName;
        $db =& DB::connect($dsn);
        if (DB::isError($db)) {
            die($db->getMessage());}
    et voici index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            require('configs/connexion.php');
            $stmt = 'select * from authentification where login='."'".$login."'".' and psw='."'".md5($psw)."'";
            $res = $db -> query($stmt);
            // Always check that result is not an error
            while ($res->fetchInto($row)) {
                // En supposant que le mode par défaut de DB est DB_FETCHMODE_ORDERED
                echo $row[0] . "\n";
            }
            if (PEAR::isError($res)) {
                die($res->getMessage());
            }
    et voici l'erreur généré
    Fatal error: Call to a member function on a non-object in d:\program files\easyphp1-7\www\example\classe\authentification.php

  4. #4
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    mais l'erreur se situe ailleurs là, non?

    >> authentification.php

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 231
    Points : 73
    Points
    73
    Par défaut
    ah excuses-moi, la page s'appelle authentification.php mais pas index.php

Discussions similaires

  1. [AC-2007] Masquer et Afficher les requêtes dans une Base de données Access
    Par Rayan1 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/01/2016, 08h43
  2. [XSLT] Requête dans une base de données
    Par nicoboud2 dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 05/10/2009, 10h34
  3. Réponses: 1
    Dernier message: 13/01/2009, 12h41
  4. Réponses: 6
    Dernier message: 14/11/2008, 20h48
  5. Requête dans une base de données énorme
    Par Nanji dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/06/2006, 13h13

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