PDO

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)数据源格式

                        (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);
            
             添加
                       主要思路:
                                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,返回的是影响的记录条数
              查询
                        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()      




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值