MySQL 是 PHP 操作 MySQL 数据库最原始的 Extension。MySQLi 的 i 代表 Improvement ,提供了相对进阶的功能,就 Extension 而言,本身也增加了安全性。而 PDO(PHP Data Object)则是提供了一个 Abstraction Layer 来操作数据库
使用原生 MySQL API
MySQL API 大部分扩展自 PHP 5.5.0 起已废弃,并在将来会被移除。应使用 MySQLi或 PDO_MySQL 扩展来替换之。原生 MySQL API里$link都是可以省略的,如果没有填写,默认使用上一次的连接。建议写上。
使用MySQLi类
1、MySQLi面向过程
与原生 MySQL API基本用法是一样的,只需将mysql替换成mysqli且把$link放在方法的第一个参数就行了。相比原生 MySQL API,面向过程化的MySQLi里的$link是不可以省略的,如果没有填写,会抛出一个警告。由上面代码也可以看出,面向过程化的MySQLi与原生 MySQL API基本一致。
$result = mysqli_query($link, 'select * from user');
2、MySQLi面向对象
比较重要的是MySQLi类和mysqli_result类,前者用于发送查询,后者用于从结果集返回数据。
$result = $link->query('select * from user') or die($link->errno . ':' .$link->error);
MySQLi 面向过程与面向对象的区别:从上面的两查询代码可以看出,面向对象是通过连接 new 出的 $link对象,访问其属性、方法等通过->的形式进行。
使用PDO
不管是使用原生的MySQL API,还是MySQLi,都还是有缺陷的。
1、不支持事务机制;
2、仅支持MySQL,不能使用其它数据库。
3、不安全,可能有注入风险
4、不支持异常处理
PHP的PDO扩展巧妙的解决了这些问题。
PDO使用dsn连接,支持众多类型的数据库,如mysql,postgresql,oracle,mssql等。
PDO(php data object)扩展类库为php访问数据库定义了轻量级的、一致性的接口,它提供了一个数据库访问抽象层。这样,无论你使用什么数据库,都可以通过一致的函数执行查询和获取数据。
PDO大大简化了数据库的操作并能够屏蔽不同数据库之间的差异,使用pdo可以很方便地进行跨数据库程序的开发,以及不同数据库间的移植,是将来php在数据库处理方面的主要发展方向。
命令
描述
SELECT VERSION( )
服务器版本信息
SELECT DATABASE( )
当前数据库名 (或者返回空)
SELECT USER( )
当前用户名
SHOW STATUS
服务器状态
SHOW VARIABLES
服务器配置变量