共计 1763 个字符,预计需要花费 5 分钟才能阅读完成。
名词解释:
mysqli,mysqlnd,pdo 到底是什么?,有什么用途?
MySQL: This extension is deprecated as of PHP 5.5.0, and has been removed as of php 7.0.0.
MYSQLI: mysql Improved Extension
MySQLND: MySQL Native Drive
PDO:The PHP Data Objects。extension defines a lightweight, consistent interface for accessing databases in PHP。
以上,摘自 PHP 官方手册: http://php.net/manual/en/book.mysqli.php
以下为中文翻译:
MySQL 也叫 Original MySQL,PHP4 版本的 MYSQL 扩展,从 PHP5 起已经被废弃,并从 PHP7 中移除。
MySQLI 叫做“MySQL 增强扩展”。
MySQLND MYSQL NATIVE DIRVER 叫做 MYSQL“官方驱动”或者更加直接点的叫做“原生驱动”
PDO PHP Data Objects PHP 数据对象,是 PHP 应用中的一个数据库抽象层规范。
再补充几个名词解释:
1、什么是 API?
一个应用程序接口(Application Programming Interface 的缩写),定义了类,方法,函数,变量等等一切 你的应用程序中为了完成特定任务而需要调用的内容。在 PHP 应用程序需要和数据库进行交互的时候所需要的 API 通常是通过 PHP 扩展暴露出来(给终端 PHP 程序员调用)。
上文所说的 MYSQL 和 MYSQLI 扩展就提供了这样的 API。
2、什么是驱动?
驱动是一段设计用来于一种特定类型的数据库服务器进行交互的软件代码。驱动可能会调用一些库,
比如 MySQL 客户端库或者 MySQL Native 驱动库。这些库实现了用于和 MySQL 数据库服务器进行交互的底层协议。
从 PHP 拓展的角度上看,MYSQL 和 MYSQLi 还是比较上层的拓展,依赖更底层的库去连接和访问数据库。
上文所说的 MYSQLND 就是所说的底层的数据库驱动。当然,还有一个驱动叫做 libmysqlclient。
小结:
从应用的层面上看,我们通过 PHP 的 MYSQL 或者 MYSQLi 扩展提供的 API 去操作数据库。
从底层来看,MYSQLND 提供了底层和数据库交互的支持 (可以简单理解为和 MySQL server 进行网络协议交互)。
而 PDO,则提供了一个统一的 API 接口,使得你的 PHP 应用不去关心具体要连接的数据库服务器系统类型。也就是说,如果你使用 PDO 的 API,可以在任何需要的时候无缝切换数据库服务器。比如 MYSQL,SQLITE 任何数据库都行。
即从大部分功能上看,PDO 提供的 API 接口和 MYSQLI 提供的接口对于普通的增删改查效果是一致的。
通过 PHP 代码理解:
MySQL 连接:
<?php
$conn = @ mysql_connect(“localhost”, “root”, “”) or die(“ 数据库连接错误 ”);
mysql_select_db(“bbs”, $conn);
mysql_query(“set names ‘utf8′”);
echo “ 数据库连接成功 ”;
?>
MYSQLI 连接:
<?php
$conn = mysqli_connect(‘localhost’, ‘root’, ”, ‘bbs’);
if(!$conn){
die(“ 数据库连接错误 ” . mysqli_connect_error());
}else{
echo” 数据库连接成功 ”;
}
?>
PDO 连接:
<?php
try{
$pdo=new pdo(“mysql:host=localhost;dbname=bbs”,”root”,””);
}catch(PDDException $e){
echo” 数据库连接错误 ”;
}
echo” 数据库连接成功 ”;
?>
注意常用参数
–enable-pdo
–with-pdo-mysql
–enable-mysqlnd
–with-mysqli
–with-mysql //php7 的已经不再支持,无论是编译还是 yum 安装都会报 ERROR
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-06/145329.htm