1,什么是PDO?
PDO就是PHP data Object 提供了PHP操作多种数据库的统一的接口
2,为什么要用PDO?
更换其他数据库的时候不需要更改代码。
3,PDO都有哪些特点?
1),编码的一致性
由于PHP可用的各种数据库扩展是由不同发行者编写的,所以尽管所有的扩展都提供了基本相同的特性,却不 满 足编码的一致性。PDO消除了这种不一致,提供了可用于各种数据库的单一接口;
2),灵活性
因为PDO在运行时加载必须的数据库驱动程序,所以不需要在每次使用不同数据库时重新配置和重新编译PHP。例如,如果数据库需要从SQL切换到MySQL,只需要加载PDO_MYSQL驱动程序就可以了。
3),面向对象的特性
PDO利用PHP5的面向对象特性,可以获得更强大、更高效的数据库通信。
4),高性能
PDO是用C编写的,编译为PHP,与用PHP编写的其他解决方案相比,虽然其他都相同,但提供了更高的性能。
4,怎么使用PDO?
开扩展
1)修改php.ini,添加MySQL的PDO扩展
打开PHP配置文件php.ini,找到php_pdo_mysql_dll这行去掉钱买你的分号
2)扩展目录中要有相应的扩展文件
打开PHP配置文件php.ini,找到extension_dir,这个就是我们扩展存在的目录,首先去掉前面的分号,然后修改
扩展目录,我的扩展目录是在"E:/Web/php/ext",就改成extension_dir="E:/Web/php/ext"。
数据
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,返回的是影响的记录条数
查询
实现代码:
<?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/36cf784565cef0acaa29bb55aebc8573.png)
$data=$result->fetchAll();
print_r($student_info);
注释:
$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()