一、基本知识
1、什么是PDO?
PDO就是PHP data Object 提供了PHP操作多种数据库的统一的接口
2、为什么要使用PDO?
PDO是PHP5新加入的一个重大功能,我们的数据库服务器为MySQL,所有的程序代码的数据库操作全是一mysql()或者mysqli()函数来操作,当我们的数据库 需要更换时比如换成,SQL、SERVER、PostgreSQL、MS 等,我们不可能去修改所有的程序代码!所以就要用到PDO,PDO很好的帮我们解决了这个问题,使用PDO操作非常方便,只需要修改数据源格式,和加载相应的驱动文件到PHP.ini即可;
3、PDO都有哪些特点?
1)编码的一致性
2)灵活性
3)面向对象特性
4)高性能
二、PDO基本使用
1、PDO的配置
1)修改php.ini,添加MySQL的PDO扩展
打开PHP配置文件php.ini,找到php_pdo_mysql.dll这行去掉钱买你的分号
2)扩展目录中要有相应的扩展文件
3)PDO连接不同的数据,要有不同的数据库驱动文件,即我们所加入配置文件的扩展
4)重新启动服务器,IIS/Apache,我的是apache,使配置生效
2、数据源配置的格式
1)数据源格式
3、方法讲解
1)添加
- <?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)查询
- <?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);
- }
![](https://i-blog.csdnimg.cn/blog_migrate/c3d65e934b9ff094d3a1b0c492c18519.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7f533b4c16524aa87b06823cbfb61403.png)
- $data=$result->fetchAll();
- print_r($student_info);
![](https://i-blog.csdnimg.cn/blog_migrate/3a0002266c2c54d163a497a6e3149184.png)
注释:
数字索引和关联索引都有,属于浪费资源,我们只需要关联索引:还可用用一下方式查询:
- $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()