①【PDO是啥】:

PDO是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接和处理,什么 php_mysql.dll、php_pgsql.dll、php_mssql.dll、php_sqlite.dll等等扩展来连接MySQL、PostgreSQL、MS SQL Server、SQLite,同样的,我们必须借助 ADOdb、PEAR::DB、PHPlib::DB之类的数据库抽象类来帮助我们,无比烦琐和低效,毕竟,php代码的效率怎么能够我们直接用C/C++写的扩展斜率高捏?所以嘛,PDO的出现是必然的,大家要平静学习的心态去接受使用,也许你会发现能够减少你不少功夫哦。
②【为什么要使用PDO】?

PDO是PHP5新加入的一个重大功能,我们的数据库服务器为MySQL,所有的程序代码的数据库操作全是一mysql()或者mysqli()函数来操作,当我们的数据库 需要更换时比如换成,SQL、SERVER、PostgreSQL、MS 等,我们不可能去修改所有的程序代码!所以就要用到PDO,PDO很好的帮我们解决了这个问题,使用PDO操作非常方便,只需要修改数据源格式,和加载相应的驱动文件到PHP.ini即可;

③【PDO的特点】?
1)编码的一致性
由于PHP可用的各种数据库扩展是由不同发行者编写的,所以尽管所有的扩展都提供了基本相同的特性,却不 满 足编码的一致性。PDO消除了这种不一致,提供了可用于各种数据库的单一接口;
2)灵活性
因为PDO在运行时加载必须的数据库驱动程序,所以不需要在每次使用不同数据库时重新配置和重新编译PHP。例如,如果数据库需要从SQL切换到MySQL,只需要加载PDO_MYSQL驱动程序就可以了。
3)面向对象特性
PDO利用PHP5的面向对象特性,可以获得更强大、更高效的数据库通信。
4)高性能
PDO是用C编写的,编译为PHP,与用PHP编写的其他解决方案相比,虽然其他都相同,但提供了更高的性能。
二、PDO基本使用

1、PDO的配置

1)修改php.ini,添加MySQL的PDO扩展

打开PHP配置文件php.ini,找到php_pdo_mysql.dll这行去掉钱买你的分号

下面有一堆类似 ;extension=php_mbstring.dll 的东西,这里就是PHP扩展加载的配置了,我们再最后面添加上我们PDO的扩展:
extension=php_pdo.dll
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
extension=php_pdo_mssql.dll
extension=php_pdo_odbc.dll
extension=php_pdo_firebird.dll
;extension=php_pdo_oci8.dll
2)扩展目录中要有相应的扩展文件
打开PHP配置文件php.ini,找到extension_dir,这个就是我们扩展存在的目录,首先去掉前面的分号,然后修改扩展目录,我的扩展目录是在"E:/Web/php/ext",就改成extension_dir="E:/Web/php/ext"。
3)PDO连接不同的数据,要有不同的数据库驱动文件,即我们所加入配置文件的扩展
4)重新启动服务器,IIS/Apache,我的是apache,使配置生效

2、数据源配置的格式

1)数据源格式
(1)连接数据库、数据库的用户名、数据库的密码
语法:$dsn =“数据库类型:dbname=数据库名;host=数据库的域名”;
$user = "数据库的用户名";
$password = "数据库的密码";
例:$dsn = "mysql:dbname=test;host=127.0.0.1";
$user = "root";
$password="123456";
(2)声明对象
$object = new PDO($dsn,$user,$password);

3、方法讲解

1)添加
主要思路:
(1)连接数据库、数据库的用户名、数据库的密码
(2)生成PDO对象
(3)执行添加
实现代码如下:
<?php
header('content-type:text/html;charset=utf8');
//连接数据库
$dsn="mysql:dbname=test;host=127.0.0.1";
//数据库的用户名
$user="root";
//数据库的密码
$password="123456";
//生成PDO对象
$object = new PDO($dsn,$user,$password);
//执行添加
$sql="insert into student(`name`,`sex`,`sex`) values('zhangsan','男','18')";
if($object->exec($sql)){  echo '添加成功';
}  

注释:exec主要用于执行没有返回结果集的操作,比如insert、delete、update,返回的是影响的记录条数

2)查询
(1)查询方式一:
主要思路:
(1)连接数据库、数据库的用户名、数据库的密码
(2)生成PDO对象
(3)执行查询

实现代码:

<?php
header('content-type:text/html;charset=utf8');
//连接数据库
$dsn="mysql:dbname=test;host=127.0.0.1";
//数据库的用户名
$user="root";
//数据库的密码
$password="123456";
//生成PDO对象
$object = new PDO($dsn,$user,$password);  $sql="select * from student";
$result = $object->query($sql);
while($arr=$result->fetch()){  print_r($arr);
}  


也可以这样   如下:

$data=$result->fetchAll();
print_r($student_info);  

输出结果为二维数组

注释:
                1、query()执行查询语句,返回结果集对象;
2、用循环利用fetch()方法逐个的取出记录,返回的是关联数组和索引数组两种数组,和mysql_fetch_array()的返回结果一致
                3、fetchAll()方法可以一次取出结果集中所有的数组,以二维数组的形式返回,但仍然是关联数组和索引数组两种数组

数字索引和关联索引都有,属于浪费资源,我们只需要关联索引:还可用用一下方式查询:

$object->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER);
$result = $object->query($sql);
$result->setFetchMode(PDO::FETCH_ASSOC);
$result_array = $result->fetchAll();
print_r($result_array);     

注释:

setAttribute()方法是设置部分属性,主要属性有:PDO::ATTR_CASE、PDO::ATTR_ERRMODE等,我们设置的是PDO::ATTR_CASE(使用关联索引获取数据)

PDO::CASE_UPPER是设置关联索引为大写,

PDO::CASE_LOWER  --  强制列名为小写

PDO::CASE_NATURAL -- 列名按照原始方式

PDO::CASE_UPPER -- 强制列名为大写

setFetchMode()方法设置获取结果集的返回值类型,同样类型还有:

PDO::FETCH_ASSOC --关联数组形式

PDO::FETCH_NUM -- 数字索引形式数组

PDO::FETCH_BOTH --两者数组形式都有

PDO::FETCH_OBJ -- 按照对象的形式,类似于以前的mysql_fetch_object()

PDO 基本使用(简)相关推荐

  1. php mysql errorcode_PHP errorCode()和errorInfo():PDO中的错误处理

    在 PDO 中有两个获取程序中错误信息的方法,分别是 errorCode() 方法和 errorInfo() 方法.在介绍这两种方法之前,我们先来了解一下 PDO 中的错误处理模式. 1.PDO 的错 ...

  2. php pdo 存储过程的返回所有结果,PHP_PDO 调用存储过程,返回参数问题

    $stmt = $db->prepare("CALL pro_test(?,@?)");$stmt->bindParam(1, $name);$stmt->bin ...

  3. php面试题集-简答题

    简答题 PHP的意思 答:PHP是一个基于服务端来创建动态网站的脚本语言,您可以用PHP和HTML生成网站主页 请简单阐述您最得意的开发之作. 暂无答案 对于大流量的网站, 您采用什么样的方法来解决访 ...

  4. PHP 中文工具类,支持汉字转拼音、拼音分词、简繁互转

    ChineseUtil 下载地址:https://github.com/Yurunsoft/ChineseUtil 另外一个中文转拼音工具:https://github.com/overtrue/pi ...

  5. 【Golang源码分析】Go Web常用程序包gorilla/mux的使用与源码简析

    目录[阅读时间:约10分钟] 一.概述 二.对比: gorilla/mux与net/http DefaultServeMux 三.简单使用 四.源码简析 1.NewRouter函数 2.HandleF ...

  6. 简析平衡树(三)——浅谈Splay

    前言 原本以为\(Treap\)已经很难了,学习了\(Splay\),我才知道,没有最难,只有更难.(强烈建议先去学一学\(Treap\)再来看这篇博客) 简介 \(Splay\)是平衡树中的一种,除 ...

  7. 《大道至简》读后感(伪代码)

    public class 伪代码{ bool 愚公移山() { //项目沟通的基本方式:惩山北之塞: //项目的目标:毕力平险,指通豫南,达于汉阴 //技术方案: 扣石垦壤,簸箕运于渤海之尾 bool ...

  8. 基于libmad库的MP3解码简析

    基于libmad库的MP3解码简析  MAD (libmad)是一个开源的高精度 MPEG 音频解码库,支持 MPEG-1(Layer I, Layer II 和 LayerIII(也就是 MP3). ...

  9. 简书php硬件交互,php设计模式——适配器模式

    适配器模式 适配器模式(Adapter)模式:将一个类的接口,转换成客户期望的另一个类的接口.适配器让原本接口不兼容的类可以合作无间.列如:将数据库接口封装成一样的接口, 这样就可以适用于不同场景 案 ...

最新文章

  1. proteus仿真micropython_【雕爷学编程】MicroPython动手做(04)——零基础学MaixPy之尝试运行...
  2. mysql忘记密码怎么改
  3. Node.js 使用webpack-dev-server工具运行项目实现自动打包编译的功能
  4. 全新章节抢先读 | 揭秘覆盖全端业务的文娱大前端技术
  5. android键盘移动光标,在Android键盘上完成键
  6. lvs mysql 端口_LVS配置及多端口服务配置
  7. XFire WebService开发快速起步
  8. 2015-04-11一些知识点
  9. VB 文件未找到: 'C:\WINDOWS\system32\ieframe.dll\1'--继续加载工程吗?
  10. 克服跨洋网络延迟,使用Docker Hub Mirror加速Docker官方镜像下载
  11. linux代码实现进程监控,linux进程监控shell脚本代码
  12. 29. JavaScript - 测试 jQuery
  13. tcs标准编写软件_tcs2010下载-tcs2010(中国标准编写模板) 免费版 - 河东下载站
  14. Mac环境下安装、配置liteide
  15. Cisco Aironet WLAN系列AP的瘦胖模式转换
  16. html5清新文艺,清新文艺的短句
  17. sleep ,wait,notify和notifyAll
  18. 【论文阅读第一期】Goods:Organizing Google’s Datasets总结
  19. 原创 牛客网产品笔试题刷题打卡——用户研究
  20. windows 和 Linux 查看IP属性(ipconfig,ifconfig)

热门文章

  1. 简单易学的机器学习算法——受限玻尔兹曼机RBM
  2. 云计算中的网络基础知识
  3. 用ScreenToGif录屏并生成gif动图
  4. F - 回转寿司 (权值线段树)
  5. 详解HMM模型 及 实现(之一:problem1)
  6. orange one plus 全志H6教程
  7. FT232USB串口通信线序
  8. git clone拉取过大的项目拉不下来的解决方法
  9. 大数据技术在CBTC列车控制系统中的应用
  10. 解读ICDE‘22论文:基于鲁棒和可解释自编码器的无监督时间序列离群点检测算法