在使用PHP去连接MySQL数据库时,有三种(流行的)方法: PHP-MySQL, PHP-MySQLi, PDO, 有一些需要注意的地方:
1, 当我们谈论MySQL的时候,更多的是指关系型数据库;
2,PHP-MySQL和PHP-MySQLi是PHP语言中,为了连接MySQL数据库而开发的扩展,对应地带有一套使用函数;
3, 关于前两种连接方式,除了传统的区别,如:
mysql扩展是在 PHP 早期版本中的,但该扩展在 2012 年开始不建议使用。
① mysqli连接是永久连接,而MySQL是非永久连接。
② mysql连接:每当第二次使用的时候,都会重新打开一个新的进程。mysqli连接:一直都只使用同一个进程。这样就可以很大程度的减轻服务器端压力。当然,如果mysql也需要永久连接的话,就可以使用mysql_pconnect()这个函数。
还存在其他的区别,如:
③ The mysql functions are procedural and use manual escaping.(mysql函数是过程化的,需要手动断连)
④ mysqli is a replacement for the mysql functions, with object-oriented and procedural versions. It has support for prepared statements.(mysqli是mysql函数的一个替代品,是面向对象的,过程可视化,支持预处理语句。)补充:mysqli也可以面向过程,支持事务,同时封装了DB操作时的一些高级方法。
Use MySQLi over the older MySQL functions. The "i" stands for "improved". The list of improvements can be found inthe docs(用mysqli而不是老掉牙的mysql函数,多出来的"i"代表"improved"(改进版),相应的改进点可以在文档中找到。)
4,关于PDO
PDO (PHP Data Objects) is a general database abstraction layer with support for MySQL among many other databases. It provides prepared statements, and significant flexibility in how data is returned.(PDO ,php数据对象,是一个通用的数据库抽象层,支持mysql与很多其他数据库混用,它支持预处理语句并且在数据返回方面非常灵活。)
I would recommend using PDO with prepared statements. It is a well-designed API and will let you more easily move to another database (including any that supports ODBC) if necessary.(回答者推荐使用PDO,因为他是个设计优良的API,需要的话,你能够非常容易得迁移到其他数据库(包括任何支持ODBC的数据库)上去。)
5,连接方式示例
MySQL面向过程连接
// 创建连接
$conn = mysql_connect($servername, $username, $password);
MySQLi面向过程
// 创建连接
$conn = mysqli_connect($servername, $username, $password);
MySQLi面向对象
// 创建连接
$conn = new mysqli($servername, $username, $password);
PDO连接
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
echo "连接成功";
}
catch(PDOException $e)
{
echo $e->getMessage();
}
5,MySQLi 和 PDO 的区别:
PDO 应用在 12 种不同数据库中, MySQLi 只针对 MySQL 数据库。
所以,如果你的项目需要在多种数据库中切换,建议使用 PDO ,这样你只需要修改连接字符串和部分查询语句即可。 使用 MySQLi, 如果不同数据库,你需要重新编写所有代码,包括查询。
两者都是面向对象, 但 MySQLi 还提供了 API 接口。
两者都支持预处理语句。 预处理语句可以防止 SQL 注入,对于 web 项目的安全性是非常重要的。