Hauptmenü

Untermenü

Advanced SQL - Praxistutorial 1 - Verbindungsaufbau

1. Die Abschnitte

2. Die Verbindungsdaten

... legen wir in der db.php im Ordner def (steht für Definition) fest. Dabei packen wir zunächst mal die eigentlichen Zugangsdaten in entsprechende Konstanten. Gegebenenfalls müsst ihr die Werte für euer System anpassen.


define('SERVER','mysql:host=localhost;dbname=advanced_sql_praxis');
define('USER','root');
define('PW','');
define('FETCH',PDO::FETCH_ASSOC);

Die Sache mit dem FETCH

... tauchte ja schon der db.class.php auf. Und mit dem Wert PDO::FETCH_ASSOC legt man einfach nur fest, dass das Ergebnis anhand eines "mysql_fetch_assoc" ausgeliefert wird.

3. Zusatzparameter

$options

Das grundsätzliche Prinzip habe ich ja schon hier erklärt. Und wir nehmen dasselbe Beispiel, indem wir den Zeichensatz für die Übertragung auf UTF-8 festlegen.


$options = array(PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES utf8');                    

$attributes


$attributes = array (
  'case'  => array(PDO::ATTR_CASEPDO::CASE_NATURAL),
  'error' => array(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION)
);

'case'

Wie ich schon in der Theorie sagte, kann man mit ATTR_CASE festlegen, wie auf Spaltennamen zugegriffen wird. In diesem Fall wollen wir die Originalschreibweise nehmen.

'error'

Hier gehen wir rabiat vor. Sobald ein wie auch immer gearteter Fehler auftritt, soll eine Exception geworfen werden.

Ein Hinweis

Man muss hier nicht mit einem assoziativen Array arbeiten, sondern könnte es auch über einen numerischen Index aufbauen. Ich mache das aber trotzdem so, da man leichter die Aufgabe erkennen kann. Auch wenn die Begriffe hier zugegebenermaßen zu kurz sind.

4. Initialisierung

Ein wenig Code habe ich schon in die index.php eingebaut. Wer sich jetzt fragt, was das soll, dem empfehle ich zunächst dieses und anschließend jenes.


require_once('def/db.php');
function __autoload($class){
  require 'class/'.$class.'.class.php';
}

Verbindung zur Datenbank

Dazu benötigen wir unterhalb des oben aufgeführten Codes nur eine weitere Zeile.


$db = new Db($options$attributes);

Erläuterung

Die Zugangsdaten

Eigentlich sollte ich das nicht mehr erwähnen, aber bevor wieder zig Leute dumme Fragen stellen, mache ich es lieber. Also! Wir haben die Daten in Konstanten abgespeichert. Und die sind genau wie $_POST-, $_GET- oder $_SESSION-Werte superglobal. Das heißt, man kann wirklich überall auf sie zugreifen.

Die Optionen und Attribute

... dagegen sind stinknormale Arrays, also nicht global verfügbar. Sie müssen daher als Parameter an den Konstruktor übergeben werden.

Und die Fehlerbehandlung?

Gute Frage! Und die Antwort darauf ist ganz einfach. In diesem Tutorial juckt sie uns einen feuchten Kehricht. Durch das ERRMODE_EXCEPTION wird uns eh eine Exception um die Ohren gehauen, wenn was nicht stimmt. Wer es sauber machen möchte, sollte mit try ... catch arbeiten.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt