Il existe trois interfaces API pour la connexion entre PHP et MySQL, à savoir : l'extension MySQL de PHP, l'extension mysqli de PHP et PHP Data Object (PDO). Ce qui suit est un résumé des trois méthodes de connexion ci-dessus pour se préparer à différents scénarios. . Choisissez la meilleure solution.
L'extension MySQL pour PHP est une des premières extensions conçue et développée pour permettre aux applications PHP d'interagir avec les bases de données MySQL. L'extension MySQL fournit une interface orientée procédure et est conçue pour MySQL 4.1.3 ou version antérieure. Par conséquent, bien que cette extension puisse interagir avec les serveurs de base de données MySQL 4.1.3 ou plus récents, elle ne prend pas en charge certaines fonctionnalités fournies par les serveurs MySQL ultérieurs. Parce qu'il est trop ancien et dangereux, il a été complètement remplacé par le dernier mysqli
L'extension mysqli de PHP , que nous appelons parfois l'extension améliorée de MySQL, peut être utilisée pour utiliser MySQL4. 1.3 ou nouvelles fonctionnalités avancées dans les versions plus récentes. Ses fonctionnalités sont les suivantes : interface orientée objet, prise en charge des instructions préparées, prise en charge de l'exécution de plusieurs instructions, prise en charge des transactions, capacités de débogage améliorées, prise en charge des services intégrés et méthodes de prétraitement qui résolvent complètement le problème de l'injection SQL. Cependant, il présente également un inconvénient : il ne prend en charge que la base de données MySQL. Si vous n'exploitez pas d'autres bases de données, c'est sans aucun doute le meilleur choix.
PDO est l'abréviation de PHP Data Objects et est une spécification de couche d'abstraction de base de données dans les applications PHP. PDO fournit une interface API unifiée qui permet à votre application PHP de ne pas se soucier du type de système de serveur de base de données spécifique à connecter. En d'autres termes, si vous utilisez l'API de PDO, vous pouvez changer de serveur de base de données de manière transparente chaque fois que nécessaire, par exemple d'Oracle à MySQL. , seule une petite quantité de code PHP doit être modifiée. Ses fonctions sont similaires à des interfaces telles que JDBC, ODBC et DBI. De même, il résout également le problème de l’injection SQL et offre une bonne sécurité. Cependant, cela présente également des inconvénients. Certaines requêtes d'exécution multi-instructions ne sont pas prises en charge (mais cette situation est rare).
L'article officiel fait également une comparaison de liste entre les trois :
PHP的mysqli扩展 | PDO | PHP的mysql扩展 | |
引入的PHP版本 | 5.0 | 5.0 | 3.0之前 |
PHP5.x是否包含 | 是 | 是 | 是 |
MySQL开发状态 | 活跃 | 在PHP5.3中活跃 | 仅维护 |
在MySQL新项目中的建议使用程度 | 建议 - 首选 | 建议 | 不建议 |
API的字符集支持 | 是 | 是 | 否 |
服务端prepare语句的支持情况 | 是 | 是 | 否 |
客户端prepare语句的支持情况 | 否 | 是 | 否 |
存储过程支持情况 | 是 | 是 | 否 |
多语句执行支持情况 | 是 | 大多数 | 否 |
是否支持所有MySQL4.1以上功能 | 是 | 大多数 | 否 |
À en juger par les résultats officiels, msqli est recommandé en premier, suivi de PDO. De nombreux résultats donnés par « folk » ont tendance à utiliser le PDO, car il n'a pas les avantages des bases de données croisées et présente les caractéristiques d'une vitesse de lecture et d'écriture rapide.
1. Extension PHP et Mysql (cette extension est obsolète depuis PHP 5.5.0 et sera supprimée à l'avenir. La manière native de PHP de se connecter à la base de données est orientée processus
<?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); ?>
<?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(); ?>
<?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;//关闭连接 ?>
site Web chinois php !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!