[PHP] PDO Datenbank Verbindung

  • MySQL PDO Tutorial



    Zu aller erst - warum sollten wir in PHP PDO benutzen, wenn es doch mysql_connect gibt?


    Die mysql_* Funktionen werden immer älter und sind in PHP7 bereits deprecated.


    Auf Linux-Systemen lässt sich PDO leicht installieren und auf Windows sind sie bei z.b. XAMPP bereits vorinstalliert.



    Eine Verbindung erstellen


    PHP
    1. <?php
    2. $db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'root', '', array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));


    > Das erstellt eine PDO Verbindung zum lokalem MySQL Server auf der "testdb" und benutzt "root" als Nutzername. Passwort ist hier leer. Die Verbindung wird in der Variable $db gespeichert.



    Abfragen durchführen


    PHP
    1. <?php
    2. $resultSet = $db->query("SELECT * FROM employee");


    Wir gehen hier davon aus, dass die Tabelle "employee" in der Datenbank "testdb" existiert. Das ResultSet ($resultSet) ist nun ein PDOStatement Objekt.
    Darauf können wir nun einige Funktionen nutzen, um uns Informationen von unserem Befehl anzeigen zu lassen.


    PHP
    1. <?php
    2. $resultSet->rowCount();


    PDOStatement->rowCount() gibt uns nun die Anzahl der erhaltenen Zeilen vom DBMS.


    PHP
    1. <?php
    2. $result = $resultSet->fetchAll();


    Hier wird die Ausgabe der Tabelle (bzw. die von unserem Befehl) in die Variable "$result" gepackt.


    Durch die Zeilen durch gehen könnt ihr dann zum beispiel so:


    PHP
    1. <?php
    2. $resultSet = $db->query("SELECT name, vname, age, location, * FROM employee");
    3. $result = $resultSet->fetchAll();
    4. foreach($result as $row) {
    5. echo $row["name"];
    6. }


    In dem Beispiel wird also aus der Tabelle "employee" jeweils für jede Zeile der "name" angezeigt.



    Prepared Statements ...


    Prepared Statements sind Statements die Platzhalter für WHERE-Klausen (z.b.) haben.


    SQL
    1. SELECT * FROM employee WHERE name = ?


    Hier seht ihr einen >select< auf "employee". Dabei wird geschaut wo der "name" gleich "?" ist.


    Das Fragezeichen dient hier als Platzhalter.





    Hier im Beispiel wird das Fragezeichen also mit "SeaLife" ersetzt.
    Ihr könnt sowas auch mit 2 oder mehreren Fragezeichen machen.



    Sollte selbsterklärend sein.



    Im folgendem Beispiel, könnt ihr solchen Platzhaltern auch Namen geben.




    Beispiele:





    Wenn ihr fragen habt, wie ihr sonst noch etwas machen könnt in PDO, könnt ihr ruhig fragen.

  • Gegen MySQLi spricht direkt nichts.


    Ich bin ein Fan von PDO (Weil Objekt-Orientiert) und empfehle diese Methode auch weiter.


    Mir wurde damals, warum auch immer, von mysql_* und mysqli::* abgeraten.


    Wer aber interesse an nem gutem Beispiel für MySQLi schaut hier: http://php.net/manual/de/mysqli.query.php


    Gruß
    SeaLife