PHP MySQL klasse Tutorial für Anfänger
Da ich mich privat sowie beruflich viel mit der PHP-Programmierung im Zusammenspiel mit mySQL zur relationalen Datenhaltung beschäftige. Möchte ich hier mal ein paar Gedanken und Beispiele vorstellen, mit der man relativ einfach auf eine mySQL-Tabelle zugreifen kann.
Zunächst habe ich eine kleine mysql-Klasse geschrieben, die alle (für mich nützlichen) Funktionen in einer Klasse kapselt. Ich finde sowieso objektorientierte Programmierung (OOP) weitaus strukturierter als der, bei funktionaler Programmierung, entstandener Spagethi-code. Seit PHP5 werden auch OOP-Konstrukte aus anderen Sprachen unterstützt, wie z. B. private oder public, um Methoden entsprechend einzuteilen. Ein wunderschönes Tutorial zu OOP in PHP5 gibt’s übrigens hier bei Peter Kropff.
Zurück zum Thema: Zunächst benötigen wir eine neue Datei “dbtest.php”:
<?php
include("mysql.class.php");
//Objekt aus mysql-Klasse instanziieren
$db = new mysql();
$name = "Egon";
$alter = 17;
//Neuen Eintrag in DB speichern
$sql = sprintf("INSERT INTO tabelle VALUES('%s',%d)", mysql_real_escape_string($name), $alter)
$db->query($sql);
//Alter aus DB wieder auslesen
$sql = sprintf("SELECT * FROM tabelle WHERE name='%s'", mysql_real_escape_string($name));
$db->query($sql);
$results = $db->fetch();
//Ausgabe: "Egon ist 17 Jahre alt."
foreach($results AS $result)
echo $result['name']." ist ".$result['alter']." Jahre alt.";
?>
Der Quellcode sollte eigentlich selbst erklärend sein. Mithilfe des sprintf()-Befehls, lassen sich auch komplexe SQL-Queries schön strukturieren und man behält die Übersicht. Außerdem kann man durch die Verwendung von sprintf() in Zusammenhang mit mysql_real_escape_string die böswilligen SQL Injection Angriffe verhindern.
Den Quellcode für das Beispiel sowie die notwendige mySQL-Klasse gibt’s hier zum:
> Download der mysql-Klasse
Anmerkungen und Verbesserungsvorschläge könnt Ihr gern als Kommentare abgeben.
- Geschrieben um 01:13Uhr
- RSS-Kommentare als Feed abonnieren
- TrackBack URI
Guten Abend
Danke für das Tutorial bin gerade am testen.
Vielleicht hast Du mir ein Tipp wie ich anstelle der foreach eine while erstellen kann?
while($data = mysql_fetch_array($result))
{
echo ”. $data[list_value] .”;
echo “\n”;
}
Danke für deine Hilfe
LG, Jules
Hallo Jules,
die foreach-Schleife ist ja nur dazu da, um das Ergebnis-Array zu durchlaufen und die Elemente auszugeben.
In der mysql-Klasse wird in der fetch()-methode bereits mit while() gearbeitet, um die Datenbankergebnisse in ein Array zu schreiben:
….
function fetch() {
while ($row=@mysql_fetch_assoc($this->result))
$rows[] = $row;
return $rows;
}
Übrigens: Ob du While() oder Foreach() verwendest, ist eigentlich egal.
Viele Grüße
Andreas
Hallo Andreas
Danke für deine Rückmeldung.
Ich hab das leider noch nicht ganz verstanden.
Wenn ich z.B. das so umsetze erhalte ich eine Fehlermeldung:
include(”system/classes/mysql.class.php”);
$db = new mysql();
$sql = sprintf(”SELECT * FROM qp_cat ORDER BY sort_order”);
$db->query($sql);
$results = $db->fetch($sql);
while($result = $results) {
echo ”. $result['cat_value'] .”;
echo “\n”;
}
Fehlermeldung:
Notice: Undefined variable: rows in /Users/pfad/name/CMS/apanel/system/classes/mysql.class.php on line 54
Was mach ich falsch?
Viele Grüße
Jules