mysql_... oder mysqli_

Ich arbeite mich gerade durch ein paar PHP Lernbücher und dabei ist mir aufgefallen das in dem einem Buch mit der Funktion mysql und in einem anderen mit _mysql i _ gearbeitet wird. Ich konnte nur geringe bis gar keine Unterschiede feststellen. Wie in folgendem Beispiel:

mysqli_query(resource link, string query, [int resultmode])
mysql_query(string query, [resource link_identifier])

Was hat es mit den zwei Varianten auf sich?

MFG JT

Hallo

Laut php.net ist mysqli für MySQL-Server ab Version 4.1.3 besser geeignet, da es mehr Funktionen unterstützt. Bei älteren MySQL-Servern hat man davon nichts, weil die zusätzlichen Funktionen dann vom Server nicht unterstützt werden.

Außerdem kann mysqli auch objektorientiert genutzt werden.

Im Fall von *_query besteht der Unterschied in einem zusätzlichen Parameter bei der mysqli-Variante.

Wenn man einen halbwegs aktuellen MySQL-Server hat, sollte man mysqli (falls man alle MySQL-Funktionen ausnutzen will) oder PDO (falls man eher Wert auf leichte Portierbarkeit auf andere SQL-Systeme legt) benutzen.

sigterm

Hallo,

Ich arbeite mich gerade durch ein paar PHP Lernbücher und
dabei ist mir aufgefallen das in dem einem Buch mit der
Funktion mysql und in einem anderen mit _mysql i _ gearbeitet
wird. Ich konnte nur geringe bis gar keine Unterschiede
feststellen. Wie in folgendem Beispiel:
mysqli_query(resource link, string query, [int resultmode])
mysql_query(string query, [resource link_identifier])
Was hat es mit den zwei Varianten auf sich?

Wie sigterm schon geschrieben hat, entwickelten sich
aus der alten bare metal-Variante mysql_NNN im
Laufe der Zeit verschiedene Ableger. Bei mysqli (i bedeutet
improved) versuchte man, das ganze „objektorientiert“
zu gestalten und PDO::mysql ist angelehnt an Perl’s DBI::mysql.

Nach meiner Erfahrung ist es dennoch besser verdaulich
(einfacher), das „alte“ mysql_NNN zu verwenden und dabei
prepared statements sowie das Maskieren von Sonderzeichen
von Hand zu machen. Und wenn es komplexer wird, PDO::mysql
verwenden. mysqli sieht mir eher nach „Übergangslösung“ aus.

Siehe auch: http://www.php.net/manual/en/mysqli.overview.php
und: http://bugs.php.net/bug.php?id=46808

Grüße

CMБ