Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbankverbindung mit PDO und späteren Übergabe der Datenbank

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datenbankverbindung mit PDO und späteren Übergabe der Datenbank

    Hallo Community,


    ich habe nun einige Jahre nicht mehr aktiv in PHP programmiert und versuche gerade mich wieder da rein zu fuchsen. Dabei würde ich gerne ein Programm aus PHP5 an PHP7 anzupassen und dabei gleich auf PDO umzusteigen. Das Programm arbeitet dabei mit mehreren Datenbanken. Und hier habe ich das Problem mit PDO. Alle Beispiele die ich zu PDO gesehen habe gehen davon aus das man die Datenbank direkt beim connecten mit angibt. Daher habe ich erst einmal folgendes in einer connect.php eingetragen:


    PHP-Code:
    <?php
    $host 
    "localhost";
    $user "user";
    $pass "passwort";
    $dsn "mysql:host=$host";

    try {
        
    $pdoConnection = new PDO($dsn$user,$pass);
        
    $pdoConnection->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
        } catch(
    PDOException $e) {
        echo 
    "Error Connection: ".$e->getMessage();
    }

    ?>
    In den darauf folgenden Dateien inkludiere ich die connect.php und würde dann vor
    Übergabe des SQL-Statements die Datenbank an die $pdoConnection übergeben, die Frage die sich stellt, wie muß die Anweisung dazu aussehen?

    Danke schon mal für Euer Wissen!

    Christofer

  • #2
    PDO unterstützt nur eine Datenbank. Also entweder du erstellst zwei PDO-Objekte, oder du gibst den Datenbanknamen im Query an:
    Code:
    SELECT id FROM my_database.my_table

    Kommentar


    • #3
      Hallo Hellbringer,

      danke, die SQL-Form ist mir geläufig, und die werde ich sicher so für Teile der Skripte nutzen können.
      In einem speziellem Fall eine umständliche Sache, da die SQL-Anweisung als $_POST verschickt wurde, müsste ich das erst als String zerlegen um die Datenbank da rein zu setzen. Wie würde das denn mit zwei PDO-Objekten aussehen?

      Danke und Gruß

      Christofer

      Kommentar


      • #4
        Zitat von Christofer Beitrag anzeigen
        danke, die SQL-Form ist mir geläufig, und die werde ich sicher so für Teile der Skripte nutzen können.
        In einem speziellem Fall eine umständliche Sache, da die SQL-Anweisung als $_POST verschickt wurde, müsste ich das erst als String zerlegen um die Datenbank da rein zu setzen.
        Klingt ziemlich wild. Warum verwendest du dann nicht gleich einen MySQL-Client wie z.B. phpMyAdmin?

        Zitat von Christofer Beitrag anzeigen
        Wie würde das denn mit zwei PDO-Objekten aussehen?
        Naja, du erstellst pro Datenbank ein PDO-Objekt.

        Kommentar


        • #5
          Hallo Hellbringer,

          Klingt ziemlich wild. Warum verwendest du dann nicht gleich einen MySQL-Client wie z.B. phpMyAdmin?
          Ja im Prinzip könnte man das auch mit phpMyAdmin machen, allerdings für unseren speziellen Fall mit über 80 Datenbanken brauchen wir da noch ein paar andere Features.

          Naja, du erstellst pro Datenbank ein PDO-Objekt.
          Ja das dachte ich mir dann auch als ich das 2. mal darüber nachgedacht habe. Das schreit eher nach einer Funktion, aber danke erst einmal für Deine Rückmeldung.

          Kommentar


          • #6
            Hallo Hellbringer,

            nur zur Info, wenn man die Verbindungsdaten wie z.B. wie folgt angibt:

            Code:
            $host = "localhost";
            $user = "user";
            $pass = "Passwort";
            $dsn = "mysql:host=$host";
            try {
            $pdoConnect = new PDO($dsn, $user,$pass);
            $pdoConnect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            } catch(PDOException $e) {
             echo "Error Connection: ".$e->getMessage();
            }
            kann man die Datenbank später wie folgt wählen und auch immer wieder ändern:

            Code:
            $pdoConnect->exec("use database");
            Alles andere wäre für mich auch nicht sinnvoll gewesen, da PDO ja mysqli irgendwann beerben soll und Operationen über mehrere Datenbanken möglich sein müssen.

            Viele Grüße

            Christofer

            Kommentar

            Lädt...
            X