Ankündigung

Einklappen
Keine Ankündigung bisher.

Queries mit PDO

Einklappen

Neue Werbung 2019

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

  • Queries mit PDO

    Hallo zusammen,

    ich mache parallel mehrfache unterschiedlichste Abfragen gegen meine DB. Dank dieses Forums bin ich gerade dabei, alles vom my_sql_query() auf PDO umzustellen.
    Bislang hatte ich eine zentrale "db_daten.php" file, dass ich im PHP script includiere. Mit PDO habe ich damit Probleme, da das zweite Script nicht mehr ausgeführt wird. Ich vermute, dass meine Verbindung zur DB vor dem zweiten Script wieder geschlossen wird.
    Anbei meine db_daten.php:
    PHP-Code:
    <?PHP
    $dbconfig
    ['host'] = 'localhost';
    $dbconfig['user'] = 'user';
    $dbconfig['base'] = 'base';
    $dbconfig['pass'] = 'pass';
    $dbconfig['char'] = 'utf8';

    try {
        
    $pdo = new PDO('mysql:host='.$dbconfig['host'].';dbname='.$dbconfig['base'].';charset='.$dbconfig['char'].';'$dbconfig['user'], $dbconfig['pass'], array(PDO::ATTR_PERSISTENT => true));
        
    $pdo->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
        
    $pdo->exec('SET CHARACTER SET utf8');
    }
    catch(
    PDOException $e) {
        exit(
    'Unable to connect Database.');
    }
    ?>
    Dazu der "Header" meine PHP Scripte:
    PHP-Code:
    <?PHP
    /** Absolute path to the WordPress directory. */
    if ( !defined('ABSPATH') )
            
    define('ABSPATH'dirname(__FILE__) . '/');
    require_once(
    ABSPATH 'db_daten.php');
    /** weiterer Code */
    ?>
    Ich dachte mit...
    PHP-Code:
    PDO::ATTR_PERSISTENT => true 
    ... bleibt die connection offen.

    Füge ich den Inhalt meiner db_daten.php in meinen Code ein, so funzt alles einwandfrei.
    Ist die Auslagerung nciht mehr möglich, oder ruft man es evtl nict mehr mit require_once auf?

    Grüße und Danke


  • #2
    Betreibe Debugging. Als erste Aktion aktivier das error_reporting und lass dir $pdo per var_dump nach deinem require_once anzeigen.
    Das $pdo Objekt mußt du immer für jedes Skript neu erzeugen.
    Schau dir die Hinweise zu den Persistente Datenbankverbindungen an und überlege, ob die für dein Fall (localhost) sinnvoll ist oder es dir mehr Probleme als Nutzen bringt.
    PHP-Klassen auf github

    Kommentar


    • #3
      Vllt. hast du auch eifnach ein Problem mit dem Scope (<-- such da mal nach). Innerhalb von Klassen und Funktionen kannst du nicht einfach wieder auf $PDO zugreifen, das muss vorher übergeben werden (-> Dependency Injection). mysql_query() nimmt da einfach die letzte global verfügbare Verbindung.
      You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.

      Kommentar

      Lädt...
      X