Marktplatz Downloads Tutorials Forum

Designnation bietet auch:

Tutorial hinzufügen

Beliebte Links Weitere Optionen

Tutorial suchen

Titel

Schlüsselwörter

PHP / MySQL Tutorial: Wie und warum nutze ich "mysqli"?



Ranking: +7   Kommentare: 9   |   Bewertung: Keine Berechtigung!  

Mehr als 3 Jahre ist es nun her, dass PHP 5 eingeführt wurde. Die meisten Webserver haben bereits auf die neue Engine umgestellt. Mit der neuen Version kam auch eine Erweiterung mit dem Namen mysqli, die es den „Hobby-Programmierern“ als auch den „Fortgeschrittenen-Programmiereren“ einfacher machen soll, sich im PHP/MySql-Geschehen zurechtzufinden.

In diesem Tutorial stelle ich euch das Objekt mysqli vor und zeige an Hand von Beispielen, wie einfach es ist, mysqli zu nutzen.

Voraussetzungen:
Fortgeschrittene PHP / MySql Kenntnisse.
Webserver bzw. Lokalen Server mit PHP-5 und MySql.
30 Minuten Zeit.

Im Manual von php.net findet Ihr eine Übersicht von allen Funktionen die es in mysqli gibt.

Inhaltsverzeichnis:
1) Übersicht der wichtigsten Funktionen.
2) Wir bauen eine Verbindung auf.
3) Daten via query() und fetch_assoc() auslesen.
4) Beispiel einer while()-Schleife.
5) Warum mysqli?
6) Schlusswort

1) Übersicht der wichtigsten Funktionen.
In diesem Tutorial werden wir nicht auf alle Funktionen eingehen, die mysqli hat, sondern nur einen kleinen Bruchteil aufgreifen und erklären.

mysqli::query
mysqli_result::fetch_assoc
mysqli::real_escape_string

2) Wir bauen eine Verbindung auf.
Im ersten Schritt möchten wir natürlich zunächst Verbindung mit dem MySql Server aufbauen. Hierfür benötigt Ihr den Host, einen Benutzernamen, ein Passwort, sowie den Datenbanknamen.

Code:


define('DB_HOST',    'localhost');

define('DB_USER',    'user');

define('DB_PASS',    'pass');

define('DB_BASE',    'database');



Die Werte der Konstanten ändert Ihr selbstverständlich auf eure ab.
Kommen wir nun zum eigentlichen Connect.

Code:


$db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_BASE);



Am Anfang des Connects steht die Variable $db, welche Ihr natürlich auch anders benennen könnt. Anschließend erstellen wir mit dem Operator new eine neue Verbindung über das Objekt mysqli.

Um nun testen zu können, ob die Verbindung zur Datenbank wirklich steht, nutzen wir die Funktion mysqli_connect_errno().

Code:


if(mysqli_connect_errno()) {

    die('Connection Error.');

}



Sollte es nun einen Connection Error geben, wird das Script abgebrochen und gibt die Fehlermeldung „Connection Error“ aus.

3) Daten via query() und fetch_assoc() auslesen.
Wie bereits im Titel angedeutet, verwenden wir die Funktionen query() und fetch_assoc(). Ein Query würde mit mysqli wie folgt aufgebaut werden:

Code:


$cSql = $db->query("COMMAND");



$cSql beinhaltet nun boolean true oder false je nachdem, ob der Query richtig oder falsch ausgeführt wurde. Um allerdings Daten aus der Tabelle zu erhalten, benötigen wir die Funktion fetch_assoc(), welche uns einen assoziativen Array zurückliefert.

Hinweis: Feldnamen, die von dieser Funktion zurückgegeben werden, unterscheiden sich in der Groß-/Kleinschreibung. Diese Funktion setzt NULL Felder auf den PHP Wert NULL.

Code:


$aRow = $cSql->fetch_assoc();



$aRow beinhaltet nun wie oben bereits erwähnt einen assoziativen Array mit den Daten, die Ihr im query(); bestimmt habt.

Via:

Code:


echo $aRow['FELDNAME'];



könnten wir uns den Wert von „FELDNAME“ zurückgeben lassen.

4) Beispiel einer while()-Schleife.
Sicher fragt ihr euch jetzt, wie ich mehrere Datensätze mit dieser Funktion ausgeben kann. Die Funktion while() wird hier Abhilfe schaffen.

Code:


while($aRow = $cSql->fetch()) {

    echo $aRow['FELDNAME'].'<br />';

}



Bei dem oben angezeigtem Beispiel würde die while()-Schleife solange $aRow['FELDNAME'] ausgeben, wie sie den Wert true zurückbekommt. Im Klartext: Die while()-Schleife durchläuft alle Einträge des assoziativen Arrays, bis es keine weiteren Einträge mehr gibt.

5) Warum mysqli?
Mysqli erspart nicht nur Schreibarbeit, sondern erleichtert auch den Umgang mit PHP. So hat man bspw. bei einfachen Anführungsstrichen oder auch Gänse-Füßchen derzeit immer das Problem, dass man vom query() hin orientiert die Specialchars anpassen muss. Die Funktion mysqli::real_escape_string schafft Abhilfe – sie gibt nicht nur einen „escaped string“ zurück sondern spart Code-Zeilen ein und bringt Performance.

6) Schlusswort
Ich hoffe das Tutorial hilft dabei mit mysqli zu arbeiten. Solltet Ihr Fragen haben, könnt Ihr gerne die Private Messages Funktion hier auf Designation nutzen um mich zu kontaktieren. In absehbarer Zeit werde ich weitere Tutorials herausbringen, die sich viel mit Objekten beschäftigen werden.

Veröffentlicht von: deleted_1456821596
Veröffentlicht am: 29 Jul. 2008
Bookmarks: social bookmarking yigg it Linkarena Technorati Yahoo Mr. Wrong
Schlüsserwörter: binder marc mysqli PHP


Themenverwandte Tutorials


Kommentar(e) (9)


daprophet sagt:

@metsieder:

1. Weil Konstanten zur Laufzeit kompiliert werden und dadurch weniger Speicher verbrauchen.

2. Weil das Wort Konstante es bereits sagt: Werte die konstant bleiben.

Zuletzt bearbeitet am: 10 Jan. 2009 12:13:00

10 Jan. 2009 12:12:20 • Antworten


deleted_1456821596 sagt:

Zu diesem Thema: http://de.wikipedia.org/wiki/SQL-Injection
Auch zu empfehlen ist das Buch "PHP-Sicherheit".

9 Jan. 2009 03:12:45 • Antworten


Tom sagt:

Denke für Anfänger schon Recht praktisch, es sollte allerdings nicht nur gesagt werden dass man sich "real_escape_string" spart, sondern auch die damit verbundene Sicherheit deutlich erhöht (in Bezug auf SQL Injections, ...).

9 Jan. 2009 00:33:56 • Antworten


deleted_1456821596 sagt:

Zitat SaferServer:

Im Prinzip ist es egal, ob du hier nun mysql oder mysqli schreibst, da du garnicht auf den wirkliche Vorteil von mysqli eingehst. Das wäre bei mysqli die Prepair-Statements, die das benutzen von real_escape_string fast sinnlos macht und besonders bei sehr umfangreichen Abfragen sehr viel Rechenzeit einsparen kann.



Das Tutorial sollte auch nur beim Einstieg in mysqli helfen und nicht direkt alle Funktionen erklären.

Es ist kurz und erklärt denke ich im wesentlichen alle Funktionen die ein Anfänger braucht um mit dem Objekt arbeiten zu können.

30 Sep. 2008 12:31:11 • Antworten


SaferServer sagt:

Im Prinzip ist es egal, ob du hier nun mysql oder mysqli schreibst, da du garnicht auf den wirkliche Vorteil von mysqli eingehst. Das wäre bei mysqli die Prepair-Statements, die das benutzen von real_escape_string fast sinnlos macht und besonders bei sehr umfangreichen Abfragen sehr viel Rechenzeit einsparen kann.

29 Sep. 2008 17:33:16 • Antworten


deleted_1456821596 sagt:

Sehe ich genauso.

8 Sep. 2008 12:32:10 • Antworten


Crash sagt:

Bei mir kommen die aus einer config.xml. Ich denke gegen Konstanten (wie kommt man auf Variablen?) sind völlig OK.

31 Jul. 2008 23:00:48 • Antworten


deleted_1456821596 sagt:

wenn ich ein exception handling einbaue kann ich direkt auch die klasse durch ein queryf etc. erweitern, sodass die klasse für alle funktioniert...

warum defines?
da sie meist in der config stehen und somit auch global vorhanden sein sollen.

wenn ich deine sachen berücksichtige und das tutorial update ist es nicht mehr für fortgeschrittene weil es viele sachen gibt, die ich da noch einbauen könnte.

30 Jul. 2008 12:42:29 • Antworten


metsieder sagt:

ich finde es mehr als nur sinnlos, die zugangsdaten als globale variablen zu definieren, aber vielleicht kannst du mir ja erklären warum...

btw.:
wenn du schon auf mysqli umsteigst, solltest du gleich richtig mit dem objekt arbeiten -> exceptionhandling
und eine übergabe der fehlermeldung wäre auch mehr als nur sinnvoll...

30 Jul. 2008 10:20:14 • Antworten



Anfang

<<

1

>>

Ende

Kommentar eintragen


!! Jetzt kostenlos anmelden oder einloggen und mitdiskutieren!


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