PHP-MySQL链接问题

在使用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 项目的安全性是很是重要的。

相关文章
相关标签/搜索