Marktplatz Downloads Tutorials Forum

Designnation bietet auch:

Tutorial hinzufügen

Beliebte Links Weitere Optionen

Tutorial suchen

Titel

Schlüsselwörter

PHP / MySQL Tutorial: Teil V zum eigenen Content Management System: Datenbank



Ranking: +2   Kommentare: 1   |   Bewertung: Keine Berechtigung!  

Der Kern jeder dynamischen Internetseite ist die Datenbank die im Hintergrund die Daten ausliest und verarbeitet. Es gibt verschiedene Arten die von PHP unterstützt werden. In unserem Fall entscheiden wir uns für MySql.

Konzept
Es gibt auch für die von uns gewählte Variante, MySql, verschiedene Möglichkeiten. So könnten wir bspw. die Master – Slave Konzeption verwenden. Für ein kleines Projekt unserer Art ist das allerdings zu viel des Guten. Daher entscheiden wir uns für die einfache Datenbankverbindung mit der seit PHP5 eingeführten mysqli Klasse.

Schritt 1:
Im vorherigen Tutorial haben wir bereits die Konfigurationsklasse erschaffen, sowie eine Datei, die die Konfigurationsparameter enthält. In der Datei, in der die Konfigurationsparameter gelagert werden, also „global.config.php“, fügt Ihr nun anstelle der Platzhalter („xxxx“) eure MySql-Zugangsdaten ein.

Schritt 2:
Im Ordner „framework“ müsst Ihr eine neue Datei namens „database.class.php“ erstellen. Sobald dieser Schritt erledigt ist, öffnet Ihr die Datei und fügt den durch den Link erreichbaren Programmcode ein (hier klicken).

Erläuterung der Klasse, sowie Funktionen von mysqli:
Vorab: Nicht alle Funktionen die mysqli liefert, werdet Ihr benötigen. Die Wichtigsten habe ich euch jedoch kurz zusammengefasst.

Zeile 9:
$oMySql beinhaltet das Objekt der MySqli-Klasse, um auf deren Funktionen Zugriff zu erlangen.

Zeile 16:
$oInstance beinhaltet das Objekt der Klasse „database“.

Zeile 30 bis 36:
Liefert das Singelton der Klasse „database“ zurück und gibt somit deren Funktionen frei, welche nicht geschützt wurden.

Zeile 43 bis 45:
Einfache Query Funktion.

Zeile 52 bis 58:
Mit „queryf()“, kann der Entwickler SQL-Statements schneller schreiben und muss sich keine Sorge um das Escapen zu machen.

Mit „func_get_args()“ bezieht man alle Variablen, die der Funktion mitgegeben wurden. Da der erste Parameter, der der Funktion „queryf()“ übergeben wird, immer das SQL-Statement ist, muss zunächst ein „array_shift()“ ausgeführt werden, um nur die erforderlichen Daten zu erhalten. Mit der Funktion „array_map()“ wird nun auf jede Variable, die der Funktion gegeben wurde, ein „real_escape_string“ ausgeführt. Im letzten Schritt werden die Platzhalter mit „vsprintf()“ ersetzt und man erhält das eigentliche SQL-Statement, welches anschließend ausgeführt wird.

Beispiel:
Um einen reibungslosen Ablauf mit der Klasse zu gewährleisten, muss ein Query wie folgt ausgeführt werden:

Code:


<?php

// Einzelnen Datensatz auslesen:

// Selektiert den Benutzer mit der Benutzer-ID 1.

$cSql "SELECT * FROM users WHERE id = %u";

queryf($cSql1);

$aRow $oRes->fetch_assoc();



// Mehrere Datensätze auslesen:

// Selektiert alle Benutzer mit einem Limit von 50.

$cSql "SELECT * FROM users LIMIT %u";

$oRes database::mysql()->queryf($cSql50);

while(
$aRow $oRes->fetch_assoc()) {

    
// ...

}



// Einfaches Statement ausführen

// Löscht den Benutzer mit der ID 1.

$cSql "DELETE FROM users WHERE id = %u";

database::mysql()->queryf($cSql1);

?>



Weiterführendes zu queryf();.
Die erweiterte Query-Funktion basiert auf der Funktion „vsprintf()“ bzw. „sprintf()“. Die Parameter die innerhalb des Statements eingefügt werden können, müssen also den oben genannten Funktionen identisch sein.

„%s“ würde also einen String einfügen,
„%u“ hingegen eine Zahl.

Mehr dazu findet Ihr unter: http://de3.php.net/sprintf
Die Dokumentation zu mysqli findet Ihr unter: http://de3.php.net/mysqli

Schlusswort:
Ich schreibe nun schon seit mehreren Wochen an dem Tutorial „… zum eigenen Content Management System“, jedoch finde ich, dass die Leserzahlen noch nicht ausreichen. Genau deswegen bitte ich euch, wenn Ihr mich unterstützen wollt, folgenden Banner auf eurer Website zu platzieren oder auch einen einfachen Blog-Eintrag zu verfassen. Über Feedback freue ich mich natürlich immer.



Weiterführendes:
Die Funktion „queryf()“ kursiert schon seit mehreren Monaten im Internet. Daher werdet Ihr auf diversen anderen Internetseiten Anleitungen dazu finden.

Probleme / Anregungen / Tipps:
Es kann durchaus passieren, dass euer Provider zwar mysqli erlaubt, aber nicht standartmäßig lädt. Wenn dieser Fall eintritt, kann er ggf. mit folgender Anweisung umgangen werden:

Code:


if (!extension_loaded('mysqli')) {

   if (!dl('mysqli.so')) {

       throw new Exception('8291jn!2');

   }

}



Fügt den Block einfach in der index.php (ab Zeile 1) ein.

Die restlichen Tutorials zum eigenen Content Management System findet Ihr unter www.marc-binder.de.

Veröffentlicht von: deleted_1456821596
Veröffentlicht am: 26 Jan. 2009
Bookmarks: social bookmarking yigg it Linkarena Technorati Yahoo Mr. Wrong
Schlüsserwörter: binder CMS marc MySql PHP


Themenverwandte Tutorials


Kommentar(e) (1)


deleted_1456821596 sagt:

Ich sehe gerade, dass ich einen Fehler gemacht habe. Der Block mit den Beispielen muss natürlich so aussehen:

Code:



// Einzelnen Datensatz auslesen:
// Selektiert den Benutzer mit der Benutzer-ID 1.
$cSql = "SELECT * FROM users WHERE id = %u";
$oRes = database::mysql()->queryf($cSql, 1);
$aRow = $oRes->fetch_assoc();


Zuletzt bearbeitet am: 27 Jan. 2009 08:16:14

27 Jan. 2009 08:11:51 • Antworten



Anfang

<<

1

>>

Ende

Kommentar eintragen


!! Jetzt kostenlos anmelden oder einloggen und mitdiskutieren!


Partner: • Designer in ActionFlash HilfeTutorials.dePixelio.deFlashstar BlogLizenzfreie Bilder