本篇文章给大家介绍一下PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo),结合实例形式分析了PHP基于mysql、mysqli、pdo三种方式连接MySQL数据库的相关操作技巧与注意事项。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展 、PHP的mysqli扩展 、PHP数据对象(PDO),下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案。

PHP的MySQL扩展是设计开发允许php应用与MySQL数据库交互的早期扩展。MySQL扩展提供了一个面向过程的接口,并且是针对MySQL4.1.3或者更早版本设计的。因此这个扩展虽然可以与MySQL4.1.3或更新的数据库服务端进行交互,但并不支持后期MySQL服务端提供的一些特性。由于太古老,又不安全,所以已被后来的mysqli完全取代;

PHP的mysqli扩展,我们有时称之为MySQL增强扩展,可以用于使用 MySQL4.1.3或更新版本中新的高级特性。其特点为:面向对象接口 、prepared语句支持、多语句执行支持、事务支持 、增强的调试能力、嵌入式服务支持 、预处理方式完全解决了sql注入的问题。不过其也有缺点,就是只支持mysql数据库。如果你要是不操作其他的数据库,这无疑是最好的选择。

PDO是PHP Data Objects的缩写,是PHP应用中的一个数据库抽象层规范。PDO提供了一个统一的API接口可以使得你的PHP应用不去关心具体要连接的数据库服务器系统类型,也就是说,如果你使用PDO的API,可以在任何需要的时候无缝切换数据库服务器,比如从Oracle 到MySQL,仅仅需要修改很少的PHP代码。其功能类似于JDBC、ODBC、DBI之类接口。同样,其也解决了sql注入问题,有很好的安全性。不过他也有缺点,某些多语句执行查询不支持(不过该情况很少)。

官文对于三者之间也做了列表性的比较:

PHP的mysqli扩展

PDO

PHP的mysql扩展

引入的PHP版本

5.0

5.0

3.0之前

PHP5.x是否包含

MySQL开发状态

活跃

在PHP5.3中活跃

仅维护

在MySQL新项目中的建议使用程度

建议 - 首选

建议

不建议

API的字符集支持

服务端prepare语句的支持情况

客户端prepare语句的支持情况

存储过程支持情况

多语句执行支持情况

大多数

是否支持所有MySQL4.1以上功能

大多数

从官方给出的这份结果上来看,优先推荐msqli,其次是PDO 。而“民间”给出的结果很多是倾向于使用PDO,因为其不担有跨库的优点,更有读写速度快的特点。

1、PHP与Mysql扩展(本扩展自 PHP 5.5.0 起已废弃,并在将来会被移除),PHP原生的方式去连接数据库,是面向过程的

$mysql\_conf = array(

'host'  => '127.0.0.1:3306',

'db'   => 'test',

'db\_user' => 'root',

'db\_pwd' => 'root',

);

$mysql\_conn = @mysql\_connect($mysql\_conf\['host'\], $mysql\_conf\['db\_user'\], $mysql\_conf\['db\_pwd'\]);

if (!$mysql\_conn) {

die("could not connect to the database:\\n" . mysql\_error());//诊断连接错误

}

mysql\_query("set names 'utf8'");//编码转化

$select\_db = mysql\_select\_db($mysql\_conf\['db'\]);

if (!$select\_db) {

die("could not connect to the db:\\n" . mysql\_error());

}

$sql = "select \* from user;";

$res = mysql\_query($sql);

if (!$res) {

die("could get the res:\\n" . mysql\_error());

}

while ($row = mysql\_fetch\_assoc($res)) {

print\_r($row);

}

mysql\_close($mysql\_conn);

?>

2、PHP与Mysqli扩展,面向过程、对象

$mysql\_conf = array(

'host'  => '127.0.0.1:3306',

'db'   => 'test',

'db\_user' => 'root',

'db\_pwd' => 'joshua317',

);

$mysqli = @new mysqli($mysql\_conf\['host'\], $mysql\_conf\['db\_user'\], $mysql\_conf\['db\_pwd'\]);

if ($mysqli->connect\_errno) {

die("could not connect to the database:\\n" . $mysqli->connect\_error);//诊断连接错误

}

$mysqli->query("set names 'utf8';");//编码转化

$select\_db = $mysqli->select\_db($mysql\_conf\['db'\]);

if (!$select\_db) {

die("could not connect to the db:\\n" . $mysqli->error);

}$sql = "select uid from user where name = 'joshua';";

$res = $mysqli->query($sql);

if (!$res) {

die("sql error:\\n" . $mysqli->error);

}

while ($row = $res->fetch\_assoc()) {

var\_dump($row);

}

$res->free();

$mysqli->close();

?>

3、PHP与PDO扩展,面向过程、对象

$mysql\_conf = array(

'host'  => '127.0.0.1:3306',

'db'   => 'test',

'db\_user' => 'root',

'db\_pwd' => 'joshua317',

);

$pdo = new PDO("mysql:host=" . $mysql\_conf\['host'\] . ";dbname=" . $mysql\_conf\['db'\], $mysql\_conf\['db\_user'\], $mysql\_conf\['db\_pwd'\]);//创建一个pdo对象

$pdo->exec("set names 'utf8'");

$sql = "select \* from user where name = ?";

$stmt = $pdo->prepare($sql);

$stmt->bindValue(1, 'joshua', PDO::PARAM\_STR);

$rs = $stmt->execute();

if ($rs) {

// PDO::FETCH\_ASSOC 关联数组形式

// PDO::FETCH\_NUM 数字索引数组形式

while ($row = $stmt->fetch(PDO::FETCH\_ASSOC)) {

var\_dump($row);

}

}

$pdo = null;//关闭连接

?>

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以点击链接获取进阶PHP月薪30k>>>架构师成长路线【视频、面试文档免费获取】

php 复制mysql数据库_PHP连接MySQL数据库的三种方式相关推荐

  1. php连接mysql地址_PHP连接mysql

    PHP 5 及以上版本建议使用以下方式连接 MySQL : MySQLi extension ("i" 意为 improved) PDO (PHP Data Objects) 在 ...

  2. perl mysql dml_MySQL Connector执行SQL语句的三种方式

    描述 当我们需要在Java程序中与数据库进行交互,可能首先想到的是使用某个ORM框架,因为ORM框架封装了一些实现细节,在使用上非常方便,并且一定程度上可以提升代码稳定性. 在ORM框架中,都会依赖M ...

  3. php 连接 mysql主从_php 连接主从数据库

    本代码是从uchome的代码修改的,是因为要解决uchome的效率而处理的. 这个思维其实很久就有了,只是一直没有去做,相信也有人有同样的想法,如果有类似的,那真的希望提出相关的建议. 封装的方式比较 ...

  4. vb 通过php连接mysql数据库连接_PHP连接MySQL数据库的几种方法

    1.最简单的方式-mysql(面向过程) $con = mysql_connect("localhost","root","password" ...

  5. php c 链接mysql数据库_PHP连接MySQL数据库

    php连接MySQL数据库的两种编码方式 PHP连接MySQL数据库的方式 面向过程的编码风格 //一.面向过程的编码风格 //1.PHP与MySQL建立连接 /*语法mysqli_connect(h ...

  6. li连接mysql代码_php连接mysql基本代码-测试代码

    我们现在来介绍一下php连接mysql最基本的操作. 我想学习PHP的同学,估计没有不认识mysql,而用php来操作mysql首先要做的就是连接好mysql我们现在就来说一下,如何用php来连接my ...

  7. quartz mysql数据源_配置quartz数据源的三种方式

    如果是使用了JDBC JobStore或JobStoreCMT获得持久的Job时,就要配置相关的数据源了. 方式一:使用quartz.properties文件,这时只需要在property文件中增加如 ...

  8. C#蓝牙连接及传输数据的三种方式(蓝牙传输文件、二进制数据)

    先下载InTheHand.Net.Personal.dll并在C#中引用,这个需要在网上下载 第一种.通过ObexWebRequest传输文件 先看界面 using InTheHand.Net; us ...

  9. vb 通过php连接mysql数据库连接_php连接mysql数据库

    步骤 连接数据库 $link = mysqli_connect('localhost','root','123456'); 判断/返回连接状态 if(!$link){ echo "不儿,tm ...

最新文章

  1. Android :java.lang.RuntimeException: takePicture failed
  2. 图解Ubuntu中pidgin登陆IRC
  3. LINQ to SQL语句(7)之Exists/In/Any/All/Contains
  4. [html] 你有用过图片热区吗?它有什么运用场景?
  5. 如何访问静态成员php,php – 如何访问类的静态成员?
  6. 深度学习福利入门到精通第三讲——VGGNet模型
  7. 自学hadoop(三)
  8. 【刷题第七天】leetcode611.有效三角形的个数
  9. STM32CubeMX学习笔记(26)——SDIO接口使用(读写SD卡)
  10. 八爪鱼-自定义模式采集数据
  11. win7计算机时间显示错误,Win7电脑时间同步出错怎么办?Win7电脑时间同步出错的解决方法...
  12. pid的matlab仿真,用MATLAB对PID控制做简单的仿真
  13. 小米怎么解锁,有什么相关教程
  14. 关于麒麟!关于互联网
  15. 裁员潮,带给我的思考
  16. 合肥长鑫芯片服务器,进军DDR5/GDDR6/LPDDR5内存 合肥长鑫计划第三代10nm工艺
  17. Oculus检测到你的NVIDIA驱动问题,解决办法
  18. 提升STEAM教师能力素养提升路径
  19. 为什么要有ID发号器、原理是什么以及如何实现?
  20. 开一家像嘀嘀那样的公司,需要办理哪些手续和多少预算?

热门文章

  1. 【报告分享】2021中国人才趋势报告.pdf(附下载链接)
  2. 【报告分享】2020中国时尚跨境电商发展报告.pdf(附下载链接)
  3. (Object detection)目标检测从入门到精通——第四部分anchor box
  4. php属于复合型人才,【PHP】我国薪水上涨最快的行业
  5. Leetcode每日一题:204.count-primes(计数质数)
  6. 深度学习主流框架介绍(PyTorch、TensorFlow、Keras、Caffe、Theano、MXNET)
  7. docker配置 注册中心
  8. P3254 圆桌问题
  9. excel 汇总 mysql_利用mysql收集excel录入汇总
  10. jdbc ?占位符不起作用_JDBC高级(二):DbUtils