php7.3 的 Mysql 配置和连接

原文链接:https://blog.csdn.net/u013785951/article/details/60876816

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 应用中的一个数据库抽象层规范。

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 提供的接口对于普通的增删改查效果是一致的。

最后贴下代码:

MYSQL 连接:

1
2
3
4
5
6
7

<?php
$conn = @ mysql_connect("localhost", "root", "") or die("数据库连接错误");
mysql_select_db("bbs", $conn);
mysql_query("set names 'utf8'");
echo "数据库连接成功";
?>

MYSQLI 连接:

1
2
3
4
5
6
7
8
<?php
$conn = mysqli_connect('localhost', 'root', '', 'bbs');
if(!$conn){
die("数据库连接错误" . mysqli_connect_error());
}else{
echo"数据库连接成功";
}
?>

PDO 连接:

1
2
3
4
5
6
7
8
<?php
try{
$pdo=new pdo("mysql:host=localhost;dbname=bbs","root","");
}catch(PDDException $e){
echo"数据库连接错误";
}
echo"数据库连接成功";
?>

想更多去了解他们的区别和联系,可以手动去编译一下 PHP 的源代码。注意参数

–enable-pdo
–with-pdo-mysql
–enable-mysqlnd
–with-mysqli
–with-mysql//php7 的已经不再支持,此参数 configure 的时候会报 ERROR