Neu in PHP: MySQLi

Einführung in MySQLi

Neu in PHP: MySQLi

Wird PHP bald keinen technischen Support für MySQL mehr anbieten? : Das war die Frage , die PHP – Community gefragt , wann, wenn zu einem MySQL – Server mit der alten Verbindungsweg mysql – Erweiterung , wird eine Fehlermeldung angezeigt und die Empfehlung an der Umstellung auf ext / mysqli . Diese Meldung wurde mit PHP Version 5.5 angezeigt , aber die mysqli- Erweiterung wurde bereits 2004 mit PHP 5.0 veröffentlicht.

Und warum so viel Nervosität? Unter anderem, weil das für PHP bei Oracle zuständige Team feststellte, dass es immer noch viele gab, die ext / mysql verwendeten , einschließlich Schwergewichte in der Branche wie WordPress. Oracle entschied sich dann, einen langsamen Verfallsprozess zu starten , dh einen Übergang, um ext / mysql hinter sich zu lassen und durch die neue Erweiterung zu ersetzen . Die alte Erweiterung hielt jedoch nicht mehr lange an: Mit der PHP7-Version existierte sie nicht mehr . In diesem Artikel beschreiben wir ausführlich den Nachfolger MySQLi, zeigen Beispiele und erläutern die spezifischen Unterschiede zwischen den beiden Erweiterungen.

Index
  1. Was ist PHP MySQLi?
  2. Was deckt die mysqli-Erweiterung ab?
  3. Was sind die Vorteile von MySQLi?
  4. mysqli () versus mysql (): Warum wurde die PHP-Erweiterung geändert?
  5. Fazit: MySQLi ist sicherer und schneller

Was ist PHP MySQLi?

MySQLi ist eine verbesserte Erweiterung (das letzte i ist für verbessert ) von PHP für den Zugriff auf MySQL-Datenbanken. MySQL ist neben Oracle und Microsoft SQL Server eines der weltweit beliebtesten relationalen Datenbankverwaltungssysteme (dh ein Datenbankverwaltungssystem oder DBMS). Relationale Datenbanken sind ein zentrales Element des Internets, da sie die dauerhafte Verarbeitung und Speicherung großer Datenmengen ermöglichen. Dazu teilen sie komplexe Datensätze in Teile auf und stellen dann die notwendigen Beziehungen zwischen ihnen her.

Diese 1994 von der schwedischen Firma MySQL AB entwickelte Software wird derzeit von der Oracle Corporation über ein duales Lizenzsystem vertrieben: Zusätzlich zur proprietären Lizenz für Unternehmen bietet Oracle auch eine GPL-lizenzierte Open Source-Version an. Dieses Doppellizenzierungssystem bietet Unternehmen die Möglichkeit, ihre eigenen Anwendungen auf Basis von MySQL zu entwickeln, ohne auf eine Open Source- Lizenz zurückgreifen zu müssen .

See also  ERR_CERT_COMMON_NAME_INVALID - Den Fehler verstehen und beseitigen

Was deckt die mysqli-Erweiterung ab?

In PHP gibt es drei Möglichkeiten, auf eine MySQL-Datenbank zuzugreifen. Am ältesten ist die Verwendung der MySQL-Erweiterung, die jedoch seit Version PHP 5.5 als veraltet oder veraltet gilt und mit PHP 7 vollständig entfernt wurde. In dieser neuesten Version funktioniert die MySQL- Funktion nicht mehr und wurde durch MySQL ersetzt .

Zusätzlich zur veralteten MySQL- Erweiterung , um darauf zuzugreifen Als MySQL-Datenbank bietet PHP auch PHP Data Objects (PDO) an, deren Anwendung besonders flexibel ist. Die dritte Option ist die Verwendung der MySQL Improved Extension , dh der MySQL- Erweiterung , die bereits vorhanden ist da PHP 5 den Zugriff auf MySQL-Datenbanken ermöglicht. Das folgende Snippet oder Code- Snippet kann Ihnen helfen, eine Vorstellung davon zu bekommen, wie die MySQLi PHP-Erweiterung funktioniert.

Snippet : Senden Sie eine SQL-Abfrage an die Datenbank

Verwenden Sie den Befehl query ($ sql), um Abfragen oder Abfragen an die Datenbank zu senden :

  <?php $mysqli = new mysqli("localhost", "user", "password", "database"); if ($mysqli->connect_errno) { die("error de conexión: " . $mysqli->connect_error); } $sql = "UPDATE tabla SET columna = 'Valor' WHERE id = 1"; $mysqli->query($sql); ?>  

Was sind die Vorteile von MySQLi?

Im Gegensatz zum Vorgänger kann die mysqli- Erweiterung nicht nur prozedural, sondern auch objektorientiert verwendet werden . Ein Vorteil der objektorientierten Programmierung besteht darin , dass geschriebener Code kann leicht korrigiert und angepasst wird später . Dies kann beispielsweise nützlich sein, um neue Klassen zu erstellen, die das Verhalten und die Eigenschaften anderer vorhandener Klassen erben können. Dadurch wird die Entwicklungszeit erheblich verkürzt und die Anpassung des Programms an ein sich änderndes Umfeld oder neue Anforderungen erleichtert.

Ein weiterer wichtiger Vorteil von MySQLi sind die vorbereiteten Anweisungen oder vorbereiteten Abfragen . Dies sind sozusagen vorgefertigte Anweisungen für das Datenbanksystem. Während herkömmliche Anweisungen Parameterwerte enthalten, enthalten vorbereitete Anweisungen stattdessen sogenannte Platzhalter oder Platzhalter. Wenn eine Anweisung mit unterschiedlichen Parametern im Datenbanksystem mehrmals ausgeführt wird (z. B. in einer Schleife), können die vorbereiteten Anweisungen die Geschwindigkeit erhöhen, da die Aufträge selbst bereits in der Datenbank kompiliert sind und sie müssen einfach mit den neuen Parametern ausgeführt werden. Darüber hinaus sind vorbereitete Anweisungen eine wirksame vorbeugende Maßnahme gegen SQL-Injektionen, da das Datenbanksystem die Gültigkeit der Parameter überprüfen muss, bevor sie verarbeitet werden.

See also  HTTP-Anfrage: Die Anforderungsmethoden, die Sie kennen sollten

Snippet : vorbereitete Anweisungen in MySQLi

In MySQLi kann ein Beispiel für vorbereitete Anweisungen die folgende Form haben:

  <?php $mysqli = new mysqli("localhost", "user", "Password", "database"); if ($mysqli->connect_errno) { die("error de conexión: " . $mysqli->connect_error); } $sql = "UPDATE user SET email = ?, contraseña = ? WHERE id = ?"; $statement = $mysqli->prepare($sql); $statement->bind_param('ssi', $email, $contraseña, $id); //Asignar valores a las variables $id= 1; $email = "[email protected]"; $contraseña = "nueva contraseña"; $statement->execute(); ?>  

Der Befehl bind_param () verknüpft die Parameter der SQL-Abfrage mit den Variablen. Im obigen Beispiel beschreibt das erste Argument für bind_param () , das den Wert ssi hat , die Parametertypen. In diesem Fall gibt ssi an, dass die Abfrage drei Parameter enthält: Der erste ist vom Typ string , der zweite ist ebenfalls vom Typ und der dritte ist vom Typ intege r. Für Gleitkommazahlen gibt es auch den Wert d .

Sobald die Variablen mit den Parametern verknüpft wurden, werden diesen die entsprechenden Werte zugewiesen, und mit der $ -Anweisung? Execute () wird die vorbereitete Anweisung an die Datenbank gesendet . Im Vergleich zur PDO-Erweiterung ist dieser Vorgang jedoch deutlich komplizierter.

mysqli () versus mysql (): Warum wurde die PHP-Erweiterung geändert?

Es blieb keine andere Wahl, als zu MySQLi zu wechseln, da die alte MySQL- Erweiterung veraltet war. Außerdem hatten wir bei der Entwicklung der alten Erweiterung versucht, sie abwärtskompatibel zu machen, sodass der Code schwer zu aktualisieren war , da er aus den Anfängen von PHP und MySQL stammt und nicht teilweise aus dem entwickelt wurde besserer Weg.

Wenn beispielsweise keine Verbindungsressourcen explizit angegeben wurden, haben alle Funktionen versucht, die zuletzt aufgetretene Verbindung zu verwenden. Im schlimmsten Fall könnte mysql_query () sogar auf eine völlig andere Datenbank zugreifen. Die Verbindungskennung war in der alten Erweiterung optional, während sie in der neuen angegeben werden muss. Es wurden auch vorbereitete Anweisungen hinzugefügt, die das Lesen der Daten aus der Datenbank schneller und sicherer machen.

See also  Was ist HTTP?

Glücklicherweise können viele Funktionen einfach durch Hinzufügen eines i zur Funktion mysql () geändert werden . Es gibt jedoch einige Unterschiede zwischen den beiden Erweiterungen.

Snippet : Verbindungskennung in MySQL und MySQLi

Einige mysqli () -Funktionen erfordern eine Verbindungskennung, dh eine PHP-Variable, die beim Herstellen einer Verbindung zur Datenbank generiert wird. Im folgenden Beispiel ist es $ link .

  <?php // mysql() establecer conexión: mysql_connect("localhost", "root", "", "test"); // mysqli() establecer conexión: $link = mysqli_connect("localhost", "root", "", "test"); ?>  

Snippet : Daten aus Datenbanktabelle lesen

Die Funktion mysqli_query () erfordert ein Verbindungshandle. stattdessen die Funktion mysqli_fetch_array ( ) Nein.

  <?php $link = mysqli_connect("localhost", "root", "", "test"); // Leer registros: $registros = mysqli_query($link, "SELECT `nombre`, `texto`, `fecha` FROM `mensajes`"); // Mostrar registros: while (list($nombre, $texto, $fecha) = mysqli_fetch_array($registros)) { echo "<p>$nombre - $titel - $texto - $fecha</p>"; } ?>  

Neben der oben genannten Funktion benötigen unter anderem folgende Funktionen eine Verbindungskennung:

  • mysqli_set_charset ()
  • mysqli_real_escape_string ()
  • mysqli_insert_id ()

Fazit: MySQLi ist sicherer und schneller

Der Wechsel zu MySQLi war notwendig, um den Zugriff auf die Datenbanken zu beschleunigen. Der neuen Erweiterung wurden vorbereitete Anweisungen oder vorbereitete Abfragen hinzugefügt, die auch die Verbindungssicherheit verbessern, indem sie SQL-Injektionen verhindern. Sie können sie verhindern, weil sie das Datenbanksystem zwingen, vor der Verarbeitung zu überprüfen, ob die Parameter gültig sind. Als ob das nicht genug wäre, kann der neue Code dank objektorientierter Programmierung viel einfacher aktualisiert werden.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *