php连接虚拟机中mysql数据库吗,PHP连接MySQL数据库的三种方式
本篇文章给大家介绍一下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数据库的三种方式相关推荐
- mysql 表中添加数据类型_MySQL数据表添加字段(三种方式)
MySQL 数据表是由行和列构成的,通常把表的"列"称为字段(Field),把表的"行"称为记录(Record).随着业务的变化,可能需要在已有的表中添加新的字 ...
- python通过什么对象连接数据库_「Python」连接数据库的三种方式
连接SQLite 要操作关系数据库,首先需要连接到数据库,一个数据库连接称为Connection: 连接到数据库后,需要打开游标,称之为Cursor,通过Cursor执行SQL语句,然后,获得执行结果 ...
- mysql admin 修改密码_mysql修改密码的三种方式
方法1: 用SET PASSWORD命令 首先登录MySQL,使用mysql自带的那个客户端连接上mysql. 格式:mysql> set password for 用户名@localhost ...
- jQuery中通过JSONP来跨域获取数据的三种方式
第一种方法是在ajax函数中设置dataType为'jsonp' $.ajax({dataType: 'jsonp',url: 'http://www.a.com/user?id=123',succe ...
- mysql 身份证_MySQL--隐藏手机号、身份证号三种方式
测试数据 SELECT * FROM `userinfo`; 方式一(最推荐) SELECT `name` AS '姓名', INSERT ( telephone, 4, 4, '****' ) AS ...
- MySQL 8.0 异步复制的三种方式
本实验中分别针对空库.脱机.联机三种方式,配置一主两从的mysql标准异步复制.只做整服务器级别的复制,不考虑对个别库表或使用过滤复制的情况. 实验环境 [root@slave2 ~]# cat /e ...
- mysql datasource property_spring配置datasource三种方式
3.使用org.springframework.jndi.JndiObjectFactoryBean 说明:JndiObjectFactoryBean 能够通过JNDI获取DataSource jav ...
- Mybaits plus 数据库映射java实体三种方式
前言 数据库一般是用下划线进行设计字段,Java实体一般用驼峰法设计属性.这是不成文的规定.当数据库字段映射java实体会出现问题.下面分别是数据库字段和实体属性. 解决问题三种方式 1.利用mysq ...
- 【玩转SQLite系列】(二)SQLite创建和打开数据库的三种方式
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53234396 本文出自[DylanAndroid的博客] [玩转SQLite系 ...
最新文章
- 一.Timesten安装
- ESP32串口转WiFi双天线ESP32-S模组
- Supervisor 守护你的进程
- Android之动画精讲一:从setTranslationX谈属性动画和view动画的区别
- 实现技术3次作业 谢筱 1101220759
- 迅雷影音怎样 1.5倍速度播放
- firebase登录验证_如何使用Firebase通过三步向身份验证本机添加身份验证
- 写给想要做自动化测试的人
- android 自定义view 水波纹进度球
- require-ensure
- ubuntu12.04 Struts2 配置过程中出现的错误
- django uWSGI nginx搭建一个web服务器 确定可用
- Atitit 数据控制语言与权限 DCL
- python 打开txt_python编程之文件操作
- PSNR峰值信噪比(python代码实现+SSIM+MSIM)
- 多Excel合并成一个Excel的多sheet
- 大数据处理技术-头歌平台-答案
- linux执行脚本中方法,Linux中执行shell脚本命令的4种方法总结
- 征信系统如何保障信息主体的合法权益?
- 教育专家妙论生命法则