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

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

PHP应用与MysqL数据库交互的早期扩展。MysqL扩展提供了一个面向过程的接口,并且是针对MysqL4.1.3或者更早版本设计的。因此这个扩展虽然可以与MysqL4.1.3或更新的数据库服务端进行交互,但并不支持后期MysqL服务端提供的一些特性。由于太古老,又不安全,所以已被后来的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版本

5.0

5.0

3.0之前

PHP5.x是否包含

活跃

在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\_pwd' => 'joshua317',  );

$MysqLi = @new MysqLi($MysqL\_conf\['host'\],$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',  );

$pdo = new PDO("MysqL:host=" . $MysqL\_conf\['host'\] . ";dbname=" . $MysqL\_conf\['db'\],$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. mysql 表中添加数据类型_MySQL数据表添加字段(三种方式)

    MySQL 数据表是由行和列构成的,通常把表的"列"称为字段(Field),把表的"行"称为记录(Record).随着业务的变化,可能需要在已有的表中添加新的字 ...

  2. python通过什么对象连接数据库_「Python」连接数据库的三种方式

    连接SQLite 要操作关系数据库,首先需要连接到数据库,一个数据库连接称为Connection: 连接到数据库后,需要打开游标,称之为Cursor,通过Cursor执行SQL语句,然后,获得执行结果 ...

  3. mysql admin 修改密码_mysql修改密码的三种方式

    方法1: 用SET PASSWORD命令 首先登录MySQL,使用mysql自带的那个客户端连接上mysql. 格式:mysql> set password for 用户名@localhost ...

  4. jQuery中通过JSONP来跨域获取数据的三种方式

    第一种方法是在ajax函数中设置dataType为'jsonp' $.ajax({dataType: 'jsonp',url: 'http://www.a.com/user?id=123',succe ...

  5. mysql 身份证_MySQL--隐藏手机号、身份证号三种方式

    测试数据 SELECT * FROM `userinfo`; 方式一(最推荐) SELECT `name` AS '姓名', INSERT ( telephone, 4, 4, '****' ) AS ...

  6. MySQL 8.0 异步复制的三种方式

    本实验中分别针对空库.脱机.联机三种方式,配置一主两从的mysql标准异步复制.只做整服务器级别的复制,不考虑对个别库表或使用过滤复制的情况. 实验环境 [root@slave2 ~]# cat /e ...

  7. mysql datasource property_spring配置datasource三种方式

    3.使用org.springframework.jndi.JndiObjectFactoryBean 说明:JndiObjectFactoryBean 能够通过JNDI获取DataSource jav ...

  8. Mybaits plus 数据库映射java实体三种方式

    前言 数据库一般是用下划线进行设计字段,Java实体一般用驼峰法设计属性.这是不成文的规定.当数据库字段映射java实体会出现问题.下面分别是数据库字段和实体属性. 解决问题三种方式 1.利用mysq ...

  9. 【玩转SQLite系列】(二)SQLite创建和打开数据库的三种方式

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53234396 本文出自[DylanAndroid的博客] [玩转SQLite系 ...

最新文章

  1. 一.Timesten安装
  2. ESP32串口转WiFi双天线ESP32-S模组
  3. Supervisor 守护你的进程
  4. Android之动画精讲一:从setTranslationX谈属性动画和view动画的区别
  5. 实现技术3次作业 谢筱 1101220759
  6. 迅雷影音怎样 1.5倍速度播放
  7. firebase登录验证_如何使用Firebase通过三步向身份验证本机添加身份验证
  8. 写给想要做自动化测试的人
  9. android 自定义view 水波纹进度球
  10. require-ensure
  11. ubuntu12.04 Struts2 配置过程中出现的错误
  12. django uWSGI nginx搭建一个web服务器 确定可用
  13. Atitit 数据控制语言与权限  DCL
  14. python 打开txt_python编程之文件操作
  15. PSNR峰值信噪比(python代码实现+SSIM+MSIM)
  16. 多Excel合并成一个Excel的多sheet
  17. 大数据处理技术-头歌平台-答案
  18. linux执行脚本中方法,Linux中执行shell脚本命令的4种方法总结
  19. 征信系统如何保障信息主体的合法权益?
  20. 教育专家妙论生命法则

热门文章

  1. 惊叹C4D设计作品分享,超级给力的灵感
  2. 卡通形象医疗病毒细菌宣传海报模板,psd分层,方便应用!
  3. 淘宝海报字体素材模板,让你的海报字体活起来!
  4. Qt实现桌面右下角放置窗体
  5. Linux内核跟踪eBPF:bpftrace 参考指南
  6. OpenCV学习笔记:绘图指令(矩形、圆、线、文本标注)
  7. vue接收jsp发送的post请求_vue与后台交互之post用法
  8. python知识总结os**
  9. element table批量删除_element 表格批量删除
  10. python3语音控制电脑_python语音控制电脑_uusee全屏