Heim  >  Artikel  >  Backend-Entwicklung  >  Bringen Sie Ihnen in drei Minuten bei, MySQLi in PHP zu verstehen

Bringen Sie Ihnen in drei Minuten bei, MySQLi in PHP zu verstehen

醉折花枝作酒筹
醉折花枝作酒筹nach vorne
2021-06-24 16:30:301895Durchsuche

Ab diesem Artikel lernen wir die MySQLi-Erweiterung kennen. Man kann sagen, dass die MySQL-Erweiterung (ursprünglich) für viele von uns das Einführungs-Tutorial ist, um eine Verbindung zur Datenbank herzustellen, wenn wir zum ersten Mal mit dem Erlernen von PHP beginnen. Wenn Sie nun prozeduralen Code zum Betreiben der Datenbank verwenden möchten, können Sie nur die MySQLi-Erweiterung verwenden.

Bringen Sie Ihnen in drei Minuten bei, MySQLi in PHP zu verstehen

Wir haben das Studium von PDO abgeschlossen. Ab diesem Artikel lernen wir weiterhin eine weitere MySQL-Erweiterung kennen, die neben PDO die Kernerweiterung von MySQLi ist. Sein Vorfahre, die MySQL-Erweiterung (ursprünglich), war wohl der Leitfaden für die Verbindung zu Datenbanken, als viele von uns anfingen, PHP zu lernen. Im Laufe der Zeit wurde die MySQL-Erweiterung (ursprünglich) in PHP7 jedoch vollständig aufgegeben. Wenn Sie nun prozeduralen Code zum Betreiben der Datenbank verwenden möchten, können Sie nur die MySQLi-Erweiterung verwenden. Natürlich unterstützt die MySQLi-Erweiterung auch objektorientiertes Schreiben.

Was ist MySQLi?

Die MySQLi-Erweiterung ermöglicht uns den Zugriff auf die Funktionen, die von MySQL4.1-Datenbanken und höher bereitgestellt werden. Es ist speziell auf die MySQL-Datenbank ausgerichtet, im Gegensatz zu PDO, das über verschiedene DNS eine Verbindung zu verschiedenen Datenbanken herstellen kann.

Unterschiede und Zusammenhänge mit MySQL und PDO

Lassen Sie uns zunächst einen Blick auf die früheste MySQL-Erweiterung werfen.

  • Nur für Prozeduren

  • Unterstützt gespeicherte Prozeduren, die Ausführung mehrerer Anweisungen und vorbereitete Anweisungen nicht.

  • PHP7 wurde gelöscht und wird überhaupt nicht unterstützt. Dann PDO.

Unterstützt nur für Mit der Objektmethode

  • kann eine Verbindung zu einer Vielzahl von Datenbanken hergestellt werden, das Wechseln der Datenbanken verursacht weniger Änderungen und Sie müssen möglicherweise nicht einmal den Code ändern

  • Unterstützt gespeicherte Prozeduren, die Ausführung mehrerer Anweisungen und vorbereitete Anweisungen

  • Das letzte ist MySQLi.

Unterstützt sowohl objektorientierte als auch prozessorientierte Schreibmethoden

  • Unterstützt nur MySQL-Datenbank

  • Unterstützt gespeicherte Prozeduren, die Ausführung mehrerer Anweisungen und vorbereitete Anweisungen

  • Befolgen Sie die Versionsaktualisierungen von PHP und MySQL , Sie können schnell aktualisieren und weitere erweiterte MySQL-Funktionen unterstützen

  • Nach diesen drei Funktionen zu urteilen, ist die MySQL-Erweiterung (Original) definitiv nicht zu empfehlen, selbst für alte Projekte, solange sie die PHP-Version von PDO oder MySQLi unterstützt sollten darüber nachdenken, die Datenbankverbindung auf eine dieser beiden Methoden umzustellen. Wenn Sie noch dabei sind, die Verwendung von MySQL-(Original-)Erweiterungen in einer PHP5-Umgebung zu erlernen, können Sie es aufgeben.

  • Die Wahl zwischen PDO und MySQLi hängt vom Betrachter ab. Tatsächlich gibt es keinen großen Unterschied zwischen ihnen, aber moderne große Frameworks kapseln grundsätzlich PDO als Standard-Datenbankverbindung. Schließlich kann seine Portabilität die Verbindung dieser allgemeinen Frameworks mit verschiedenen Datenbanken erleichtern. In einigen kleinen Frameworks oder Projekten ist MySQLi noch zu sehen.

Nische bedeutet natürlich nicht schlecht. Genau wie in der täglichen Entwicklung verwenden wir selten andere Datenbanken in der PHP-Umgebung, daher ist es bequemer, in unseren eigenen kleinen Projekten einen Satz MySQLi vollständig zu verwenden. Bequem und schnell. Wenn das alte Projekt auf die PHP7-Version umsteigen möchte und zuvor MySQL (Original) zum Herstellen einer Verbindung zur Datenbank verwendet hat, kann gleichzeitig der MySQL (Original)-Code in allen Aspekten schnell durch MySQLi ersetzt werden.

Erweiterungsinstallation und Dinge, die Sie zu MySQL8 beachten sollten

Die MySQLi-Erweiterung wird mit dem PHP-Quellcode veröffentlicht. Beim Kompilieren von PHP fügen wir einfach --with-mysqli hinzu. Der Standard-Datenbanktreiber verwendet jetzt mysqlnd und libmysql wurde im Wesentlichen eliminiert. Daher müssen beim Kompilieren keine weiteren Parameter hinzugefügt werden, sondern einfach direkt kompiliert werden.

Sie müssen beim Herstellen einer Verbindung zu MySQL8 aufpassen, da der MySQL8-Server standardmäßig caching_sha2_password als Passwortverschlüsselung verwendet. MySQLi verwendet in Versionen vor PHP7.2.4 mysql_native_password, um das Verbindungskennwort zu verschlüsseln, was dazu führt, dass keine Verbindung zur Datenbank hergestellt werden kann. Sie können die Datei my.cnf ändern und default_authentication_plugin=mysql_native_password festlegen, damit MySQL8 auch mysql_native_password zum Verschlüsseln von Benutzerkennwörtern verwenden kann.

Prozedurorientiert

Wie oben erwähnt, unterstützt MySQLi zwei Schreibmethoden, nämlich objektorientiert und prozedurorientiert. Ein einfaches Verständnis besteht darin, dass eine Schreibweise die MySQL-Erweiterung (Original) ist und die andere Schreibweise PDO ähnelt. Schauen wir uns zunächst das prozessorientierte Schreiben an.
$mysqli = mysqli_connect("localhost", "root", "", "blog_test");
$res = mysqli_query($mysqli, "SELECT * FROM zyblog_test_user");
$row = mysqli_fetch_assoc($res);
print_r($row);
Finden Sie es nicht wirklich praktisch, den MySQL-Erweiterungscode (original) zu übertragen? Ändern Sie einfach alle Methodennamen in mysqli_xxx.

Objektorientiert

Objektorientiert ist ein bisschen wie PDO. Wir müssen zuerst eine Verbindungshandle-Klasse erhalten und diese Klasse dann betreiben.
$mysqli = new mysqli("localhost", "root", "", "blog_test");
$res = $mysqli->query("SELECT * FROM zyblog_test_user");
$row = $res->fetch_assoc();
print_r($row);

面向对象和面向过程混用

另外,这两种方式还可以混合使用,不过并不推荐。混合起来使用的话很容易让看代码的人晕头转向。所以,最好还是在一个项目中就坚持使用一种方式。

$mysqli = new mysqli("localhost", "root", "", "blog_test");
$res = mysqli_query($mysqli, "SELECT * FROM zyblog_test_user");
$row = $res->fetch_assoc();
print_r($row);

在这段代码中,我们实例化了一个 mysqli 对象,然后使用面向过程的 mysqli_query() 函数来执行语句,接着又使用面向对象的方式来获取结果集。是不是很乱?但是它是可以正常运行的。

总结

从上面的内容中可以看出,PDO 的特点是支持多种不同类型的数据库,就像 Java 中的 JDBC 一样。而 MySQLi 虽然只支持 MySQL 数据库,但它却可以同时支持面向对象和面向过程两种写法。是我们针对老项目代码进行升级优化的好帮手。同时,它还是现在入门 PHP 学习相关数据库操作的首选。在接下来的文章中,我们将默认只使用 面向对象 式的写法来继续学习 MySQLi 扩展相关的知识。

测试代码:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202009/source/4.PHP中的MySQLi扩展学习(一)MySQLi介绍.php

推荐学习:php视频教程

Das obige ist der detaillierte Inhalt vonBringen Sie Ihnen in drei Minuten bei, MySQLi in PHP zu verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen