| Einführung in die MySQLi-Erweiterung von PHP 5 - MySQL vs MySQLi |
Seite 2 von 7
MySQL vs MySQLiWerfen wir mal einen Blick auf einige Vorteile von MySQLi gegenüber MySQL.
Dies sind nur einige der Gründe, die im übrigen sowohl aus dem Internet, der Online Doku aber auch aus PHP 5 Bücher stammen, die einen Umstieg auf MySQLi rechtfertigen.
Die MySQLi Erweiterung bietet aber auch wesentlich mehr Funktionen als die "klassische" MySQL Erweiterung. Das erkennt man schon daran, dass für MySQL knapp 50 prozedurale Funktionen zur Verfügung stehen, während die 3 wichtigsten MySQLi Klassen es bereits auf knapp 80 Methoden bringen. Prozedural oder objektorientiert?MySQLi wurde entwickelt damit es sich in das objektorientierte Umfeld von PHP 5 einreiht. Die prozeduralen Funktionen wurden aus Gründen der Kompatibilität und eines einfachen Umstiegs für notorische Fortschrittsverweigerer beibehalten. Deswegen ist der OOP Weg dem prozeduralen Weg klar vorzuziehen. Bevor wir endlich zum Code-Teil kommen, schauen wir uns kurz die Unterschiede zwischen MySQL, MySQLi prozedural und MySQLi objektorientiert an. Für Umsteiger von MySQL // Links der MySQL Befehl, rechts das MySQLi Gegenstueck. Der Pfeil bedeutet "wird zu" mysql_connect() -> mysqli_connect() mysql_query() -> mysqli_query() mysql_fetch_array() -> mysqli_fetch_array() // und so weiter Die Methoden beim OOP sind (meistens) ebenso eindeutig. So wird aus dem Präfix mysqli_ der Objektname mit dem -> Operator. Beispiel: // Angenommen unser Objekt traegt den Name $objekt dann sehen die Methoden wie folgt aus mysqli_query() -> $objekt->query() mysqli_fetch_array() -> $objekt->fetch_array() // und so weiter Nichts desto Trotz gibt es aber einige Besonderheiten bzw Unterschiede bei der prozeduralen und OOP Schreibweise. Einige prozedurale Funktionen haben nämlich keine OOP Methode, sondern stehen beim OOP als Eigenschaft zu Verfügung! Schauen wir uns das mal an... MySQLi Unterschiede der prozeduralen und OOP Schreibweise // Liefert die Anzahl der gefundenen Datensaetze mysqli_num_rows() -> $objekt->num_rows // Liefert die Anzahl der betroffenen Datensaetze mysqli_affected_rows() -> $objekt->affected_rows Dem affected_rows fällt eine besondere Rolle zu. So kann man es bei MySQLi jetzt auch als Ersatz für num_rows verwenden. Benutzt man in einem Query INSERT, UPDATE, REPLACE oder DELETE, liefert affected_rows die Anzahl der betroffenen Datensätze. Benutzt man in einem Query SELECT, liefert affected_rows die Anzahl der gefundenen Datensätze. Insgesamt sind die Funktions-/Methodennamen bei MySQLi so gewählt, dass jeder halbwegs erfahrene PHP Programmierer problemlos umsteigen kann, da sich die Namen an die altbekannten MySQL Funktionen anlehnen. Es kamen aber auch neue Funktionen hinzu, von denen wir uns im weiteren Verlauf des Tutorial einige anschauen wollen. |