Dieser Artikel stellt Ihnen die drei Methoden vor, mit denen PHP eine Verbindung zur MySQL-Datenbank herstellt (mysql, mysqli, pdo), und analysiert die zugehörigen Betriebsfähigkeiten und Vorsichtsmaßnahmen von PHP basierend auf den drei Methoden zum Herstellen einer Verbindung mit der MySQL-Datenbank MySQL, MySQLi und PDO in Form von Beispielen sind wichtig. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.
Es gibt drei API-Schnittstellen für die Verbindung zwischen PHP und MySQL, nämlich: PHPs MySQL-Erweiterung, PHPs MySQLi-Erweiterung und PHP Data Object (PDO). Lassen Sie uns die oben genannten drei Verbindungsmethoden zusammenfassen, um die Auswahl der besten Lösung in verschiedenen Szenarien vorzubereiten.
Die MySQL-Erweiterung für PHP ist eine frühe Erweiterung, die entworfen und entwickelt wurde, um PHP-Anwendungen die Interaktion mit der MySQL-Datenbank zu ermöglichen. Die MySQL-Erweiterung bietet eine prozedurorientierte Schnittstelle und ist für MySQL 4.1.3 oder früher konzipiert. Obwohl diese Erweiterung mit MySQL 4.1.3 oder neueren Datenbankservern interagieren kann, unterstützt sie daher einige Funktionen nicht, die von späteren MySQL-Servern bereitgestellt werden. Da es zu alt und unsicher ist, wurde es vollständig durch das spätere MySQL ersetzt.
Die MySQL-Erweiterung von PHP, die wir manchmal als erweiterte MySQL-Erweiterung bezeichnen, kann zur Verwendung des neuen MySQL 4.1.3 oder neuer verwendet werden Version. Erweiterte Funktionen. Seine Funktionen sind: objektorientierte Schnittstelle, Unterstützung vorbereiteter Anweisungen, Unterstützung für die Ausführung mehrerer Anweisungen, Transaktionsunterstützung, erweiterte Debugging-Funktionen, Unterstützung eingebetteter Dienste und Vorverarbeitungsmethoden, die das Problem der SQL-Injection vollständig lösen. Es hat jedoch auch einen Nachteil: Es unterstützt nur MySQL-Datenbanken. Wenn Sie keine anderen Datenbanken betreiben, ist dies zweifellos die beste Wahl.
PDO ist die Abkürzung für PHP Data Objects und eine Spezifikation der Datenbankabstraktionsschicht in PHP-Anwendungen. PDO bietet eine einheitliche API-Schnittstelle, die es Ihrer PHP-Anwendung ermöglicht, sich nicht um den spezifischen Datenbankserversystemtyp zu kümmern, der verbunden werden soll. Mit anderen Worten: Wenn Sie die API von PDO verwenden, können Sie bei Bedarf nahtlos zwischen Datenbankservern wechseln, z. B. von Oracle zu MySQL , muss nur ein kleiner Teil des PHP-Codes geändert werden. Seine Funktionen ähneln Schnittstellen wie JDBC, ODBC und DBI. Ebenso löst es das SQL-Injection-Problem und bietet eine gute Sicherheit. Es gibt jedoch auch Nachteile. Einige Abfragen zur Ausführung mehrerer Anweisungen werden nicht unterstützt (diese Situation kommt jedoch selten vor).
Der offizielle Artikel führt auch einen Listenvergleich zwischen den drei durch:
PHP的mysqli扩展 | PDO | PHP的mysql扩展 | |
引入的PHP版本 | 5.0 | 5.0 | 3.0之前 |
PHP5.x是否包含 | 是 | 是 | 是 |
MySQL开发状态 | 活跃 | 在PHP5.3中活跃 | 仅维护 |
在MySQL新项目中的建议使用程度 | 建议 - 首选 | 建议 | 不建议 |
API的字符集支持 | 是 | 是 | 否 |
服务端prepare语句的支持情况 | 是 | 是 | 否 |
客户端prepare语句的支持情况 | 否 | 是 | 否 |
存储过程支持情况 | 是 | 是 | 否 |
多语句执行支持情况 | 是 | 大多数 | 否 |
是否支持所有MySQL4.1以上功能 | 是 | 大多数 | 否 |
Nach den offiziellen Ergebnissen zu urteilen, wird zuerst msqli empfohlen, gefolgt von PDO. Viele der von „Folk“ angegebenen Ergebnisse neigen dazu, PDO zu verwenden, da es nicht die Vorteile einer datenbankübergreifenden Datenbank bietet und die Eigenschaften einer schnellen Lese- und Schreibgeschwindigkeit aufweist.
1. PHP- und MySQL-Erweiterung (Diese Erweiterung wurde seit PHP 5.5.0 aufgegeben und wird in Zukunft entfernt. Die native Art von PHP, eine Verbindung zur Datenbank herzustellen, ist prozessorientiert.) .
<?php $mysql_conf = array( 'host' => '127.0.0.1:3306', 'db' => 'test', 'db_user' => 'root', 'db_pwd' => 'root', ); $mysql_conn = @mysql_connect($mysql_conf['host'], $mysql_conf['db_user'], $mysql_conf['db_pwd']); if (!$mysql_conn) { die("could not connect to the database:\n" . mysql_error());//诊断连接错误 } mysql_query("set names 'utf8'");//编码转化 $select_db = mysql_select_db($mysql_conf['db']); if (!$select_db) { die("could not connect to the db:\n" . mysql_error()); } $sql = "select * from user;"; $res = mysql_query($sql); if (!$res) { die("could get the res:\n" . mysql_error()); } while ($row = mysql_fetch_assoc($res)) { print_r($row); } mysql_close($mysql_conn); ?>
2. PHP- und Mysqli-Erweiterungen, prozessorientiert und objektorientiert
<?php $mysql_conf = array( 'host' => '127.0.0.1:3306', 'db' => 'test', 'db_user' => 'root', 'db_pwd' => 'joshua317', ); $mysqli = @new mysqli($mysql_conf['host'], $mysql_conf['db_user'], $mysql_conf['db_pwd']); if ($mysqli->connect_errno) { die("could not connect to the database:\n" . $mysqli->connect_error);//诊断连接错误 } $mysqli->query("set names 'utf8';");//编码转化 $select_db = $mysqli->select_db($mysql_conf['db']); if (!$select_db) { die("could not connect to the db:\n" . $mysqli->error); }$sql = "select uid from user where name = 'joshua';"; $res = $mysqli->query($sql); if (!$res) { die("sql error:\n" . $mysqli->error); } while ($row = $res->fetch_assoc()) { var_dump($row); } $res->free(); $mysqli->close(); ?>
3. PHP- und PDO-Erweiterungen, prozessorientiert und objektorientiert -orientiert
<?php $mysql_conf = array( 'host' => '127.0.0.1:3306', 'db' => 'test', 'db_user' => 'root', 'db_pwd' => 'joshua317', ); $pdo = new PDO("mysql:host=" . $mysql_conf['host'] . ";dbname=" . $mysql_conf['db'], $mysql_conf['db_user'], $mysql_conf['db_pwd']);//创建一个pdo对象 $pdo->exec("set names 'utf8'"); $sql = "select * from user where name = ?"; $stmt = $pdo->prepare($sql); $stmt->bindValue(1, 'joshua', PDO::PARAM_STR); $rs = $stmt->execute(); if ($rs) { // PDO::FETCH_ASSOC 关联数组形式 // PDO::FETCH_NUM 数字索引数组形式 while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { var_dump($row); } } $pdo = null;//关闭连接 ?>
Weitere verwandte Informationen finden Sie auf der PHP-Chinese-Website! !
Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über drei Möglichkeiten, PHP mit der MySQL-Datenbank zu verbinden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!