在使用PHP去链接MySQL数据库时,有三种(流行的)方法: PHP-MySQL, PHP-MySQLi, PDO, 有一些须要注意的地方:php
1, 当咱们谈论MySQL的时候,更多的是指关系型数据库;mysql
2,PHP-MySQL和PHP-MySQLi是PHP语言中,为了链接MySQL数据库而开发的扩展,对应地带有一套使用函数;web
3, 关于前两种链接方式,除了传统的区别,如:sql
mysql扩展是在 PHP 早期版本中的,但该扩展在 2012 年开始不建议使用。数据库
① mysqli链接是永久链接,而MySQL是非永久链接。api
② mysql链接:每当第二次使用的时候,都会从新打开一个新的进程。mysqli链接:一直都只使用同一个进程。这样就能够很大程度的减轻服务器端压力。固然,若是mysql也须要永久链接的话,就可使用mysql_pconnect()这个函数。安全
还存在其余的区别,如:服务器
③ The mysql functions are procedural and use manual escaping.(mysql函数是过程化的,须要手动断连)ide
④ 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 in the 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 项目的安全性是很是重要的。