Advanced SQL - Praxistutorial 1 - Verbindungsaufbau
1. Die Abschnitte
- Vorwort
- Die Datenbank-Klasse
- Verbindungsaufbau
- Login
- Die grundsätzliche Vorgehensweise
- Die Übersichtsliste
- Mitglied auf dem Marktplatz anzeigen
- Mitglied anbieten Teil 1
- Mitglied anbieten Teil 2
- Direktangebot machen Teil 1
- Direktangebot machen Teil 2
- Tauschangebot machen Teil 1
- Tauschangebot machen Teil 2
- Tauschangebot machen Teil 3
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_CASE, PDO::CASE_NATURAL),
'error' => array(PDO::ATTR_ERRMODE, PDO::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