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

Langage PHP Discussion :

2 PDO sur la même page


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Dessinateur
    Inscrit en
    Juillet 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dessinateur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2020
    Messages : 1
    Par défaut 2 PDO sur la même page
    Bonjour,
    Je suis entrain de passer mon site personnel de PHP 5 à PHP 7 et je rencontre une difficulté pour recoder les bases de données.
    J'ai refais le script du compteur de visite avec
    est celui-ci est fonctionnel.
    Il se termine par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $reponse->closeCursor ();
    unset( $pdo );
    Cependant, lorsque je dois faire une connexion à une autre base de donnée sur la même page, cette dernière ne fonctionne pas et s'arrête au niveau de la 2ème connexion
    Si j'enlève le script compteur de visite, la 2ème connexion fonctionne parfaitement.
    Ma question est: peut-on mettre 2 connexions PDO sur la même page et si oui comment ?
    Merci pour vos remarques.

  2. #2
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Merci de donner le code complet qu'on puisse dire ce qui va pas.

  3. #3
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Ma question est: peut-on mettre 2 connexions PDO sur la même page et si oui comment ?
    Oui, bien sûr, donc je plussoie Laurent... Il doit y avoir un bug dans ton code.
    Quel message d'erreur obtiens-tu ?
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 74
    Par défaut
    Bonjour, je vous propose deux approches

    1 : avec une Class qui gère la connexion

    Connection
    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
     
     
    <?php
     
    namespace App;
    use \PDO;
    class Connection
    {
    //?string $dbname="defaultDBName"   : c'est un paramètre optionnel, si la fonction est appelée sans paramètre getPDO(), on va utiliser la BDD par défaut "defaultDBName"
        public static function getPDO(?string $dbname="defaultDBName"): PDO   
        {
           return  $pdo = new PDO("mysql:dbname=$dbname;host=127.0.0.1", 'root', 'toor', [
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION // will throw a PDOException and set its properties to reflect the error code and error information
            ]);
        }
     
     
    }
    ,et pour l'Appelle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //avec la base de données par defaut
    $resultSearch = Connection::getPDO()->prepare($query);
        $resultSearch->execute();
        $data = $resultSearch->fetchAll();
     
    //avec une autre  base de données p
    $resultSearch2 = Connection::getPDO("seconDB")->prepare($query2);
        $resultSearch2->execute();
        $data2 = $resultSearch2->fetchAll();
    Remarque, on peut bien sûr créer deux fonctions (sans paramètres) chacune pointe vers une base de données différente
    getDB1 () ,getDB2()
    2 -on utilisant une fonction qui va être appelée n'importe ou dans le code

    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
    24
     
    function getDB1(): PDO
        {
           return  $pdo = new PDO("mysql:dbname=db1;host=127.0.0.1", 'root', 'toor', [
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
            ]);
        }
     
        function getDB2(): PDO
        {
           return  $pdo = new PDO("mysql:dbname=db2;host=127.0.0.1", 'root', 'toor', [
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
            ]);
        }
     
    //c'est la même approche mais avec un parameter optionnel, comme le code précédent
    /*
    function getPDO(?string $dbname="defaultDB"): PDO
        {
           return  $pdo = new PDO("mysql:dbname=$dbname;host=127.0.0.1", 'root', 'toor', [
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
            ]);
        }
    */
    l'appelle sera

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $resultSearch2 = getDB1()->prepare("$query1);
        $resultSearch2->execute();
        $data2 = $resultSearch2->fetchAll();

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 539
    Par défaut
    Bonjour,

    Il est bien possible d'instancier un objet PDO sans mentionner la base de donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $pdo = new PDO("mysql;host=127.0.0.1", 'root', 'toor', [
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
            ]);
    puis utiliser exec("use dbName"); pour sélectionner la base.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $pdo->exec("use db1");//utilise db1
    /* Les opérations sur la base db1 */
    $pdo->exec("use db2");//utilise db2
    /* Les opérations sur la base db2 */

Discussions similaires

  1. [PDO] Plusieurs requêtes PDO sur une même page PHP
    Par Soso_ dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/04/2014, 14h45
  2. 2 menus sur une même page
    Par pihug12 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/12/2005, 19h15
  3. [PHP-JS] Envoi de données sur une même page...
    Par dudux dans le forum Langage
    Réponses: 8
    Dernier message: 14/09/2005, 14h51
  4. [QuickReport] Entete de groupe + détail sur la même page
    Par portu dans le forum Bases de données
    Réponses: 3
    Dernier message: 11/06/2005, 11h15
  5. lien sur une même page asp
    Par Redouane dans le forum ASP
    Réponses: 4
    Dernier message: 10/03/2004, 16h53

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