PHP offers three different APIs to connect to MySQL. Below we show the APIs provided by the mysql, mysqli, and PDO extensions. Each code snippet creates a connection to a MySQL server running on "example.com" using the username "user" and the password "password". And a query is run to greet the user.
PHP 提供了三种 API 来连接 Mysql 数据库,下面展示的就是由三种扩展(1.mysql; 2.mysqli; 3.PDO)提供的 连接API。
每一个代码片段都创建了一个到服务器的连接,域名为"example.com",用户名为"user",密码"password",每一个执行都向用户打了一声招呼。
<?php
// mysqli
$mysqli = new mysqli("example.com", "user", "password", "database");
$result = $mysqli->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $result->fetch_assoc();
echo htmlentities($row['_message']);
// PDO
$pdo = new PDO('mysql:host=example.com;dbname=database', 'user', 'password');
$statement = $pdo->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);
// mysql
$c = mysql_connect("example.com", "user", "password");
mysql_select_db("database");
$result = mysql_query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = mysql_fetch_assoc($result);
echo htmlentities($row['_message']);
?>
官网建议:
Recommended API
It is recommended to use either the mysqli or PDO_MySQL extensions. It is not recommended to use the old mysql extension for new development, as it was deprecated in PHP 5.5.0 and was removed in PHP 7. A detailed feature comparison matrix is provided below. The overall performance of all three extensions is considered to be about the same. Although the performance of the extension contributes only a fraction of the total run time of a PHP web request. Often, the impact is as low as 0.1%.
推荐的使用的 API
推荐使用 mysqli 或者是 PDO_MySQL 扩展。对于新开发的项目来说,不推荐使用旧的 mysql 扩展,因为其在 PHP 的5.5.0 版中,已经被弃用了,而在 PHP7 中直接被移除了。下面提供了一个详细的功能对比表格。三个扩展的总体性能都差不多。在一个 PHP web 请求的运行时间内,扩展所占的影响只有非常小的一部分,差不多为 0.1%。
Item | ext/mysqli | PDO_MySQL | ext/mysql |
---|---|---|---|
PHP version introduced | 5.0 | 5.1 | 2.0 |
Included with PHP 5.x | Yes | Yes | Yes |
Included with PHP 7.x | Yes | Yes | No |
Development status | Active | Active | Maintenance only in 5.x; removed in 7.x |
Lifecycle | Active | Active | Deprecated in 5.x; removed in 7.x |
Recommended for new projects | Yes | Yes | No |
OOP Interface | Yes | Yes | No |
Procedural Interface | Yes | No | Yes |
API supports non-blocking, asynchronous queries with mysqlnd | Yes | No | No |
Persistent Connections | Yes | Yes | Yes |
API supports Charsets | Yes | Yes | Yes |
API supports server-side Prepared Statements | Yes | Yes | No |
API supports client-side Prepared Statements | No | Yes | No |
API supports Stored Procedures | Yes | Yes | No |
API supports Multiple Statements | Yes | Most | No |
API supports Transactions | Yes | Yes | No |
Transactions can be controlled with SQL | Yes | Yes | Yes |
Supports all MySQL 5.1+ functionality | Yes | Most | No |
相关文章推荐: