《Php笔记2.1》PDO 对象认识与应用

在做项目的时候,PHP 是可以处理各种数据系统的,包括 MySQL、Oracle、MSSQL、SQLite,但是不同的数据系统之间使用的函数是不同的。之前使用的 mysql和mysqli 只能处理 MySQL 数据库。如果换成别的数据库就必须重新学习别的数据库函数,很麻烦同时移植也比较困难。为了解决这个问题,就需要一个“数据库抽象层”来实现,于是我们学习的 PDO 就此出现。

 

PDO 对象认识

本课时讲解 PDO 扩展开启、PDO 的优势以及工作原理。

 

PDO的安装包括驱动及扩展

 

PDO工作原理,PDO包括:

1. PDO类(包含很多方法)

2. PDOStatement 预处理类(执行完操作返回时用预处理类来作一些处理)

3. PDOException 异常处理

4. PDO DRrivers 驱动器(连接其他所有数据库所必须)

 

PDO类有构造方法,

PDOStatement类没有构造方法,是一个单太类(一种设计模式)

<?php
//echo phpinfo();
//单太类(目的是为了产生唯一的对象)

class A{
    private static $a = null;
    private function __construct(){
        
    }
    
    static function makeA(){
        if(self::$a == null){
            self::$a = new self();
        }
        return self::$a;
    }
}
print_r(A::makeA());

 

 

PDO 对象初始化

本课时讲解 PDO 初始化的三种方式:传统 PDO 初始化、通过配置文件初始化、配置 php.ini 初始化。

传统PDO初始化:

try{
    $pdo = new PDO("mysql:host=localhost;dbname=woodk;", "root", "root");
}catch(PDOException $e){
    die("数据库连接失败".$e->getMessage());
}

 

通过配置文件初始化:

mysqlPdo.ini

mysql:host=localhost;dbname=woodk

pdoDemo.php

<?php
    
try{
    //$pdo = new PDO("mysql:host=localhost;dbname=woodk", "root", "root");
    $pdo = new PDO("uri:mysqlPdo.ini", "root", "root");
    //$pdo = new PDO("uri:mysqlPdo.ini", "root", "root", $arr);
    //$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 0);
}catch(PDOException $e){
    die("数据库连接失败".$e->getMessage());
}

//echo $pdo->getAttribute(PDO::ATTR_AUTOCOMMIT);
print_r($pdo);

 

配置 php.ini 初始化: (略)

 

 

PDO 对象应用

本课时讲解 PDO 中常用方法 query、exec、fetchAll。

 

数据查询query()和getchAll()使用:

pdoTest.php:

 1 <?php
 2     
 3     //1.连接数据库
 4     try{
 5         $pdo = new PDO("mysql:host=localhost;dbname=woodk", "root", "root");
 6         $pdo->query('set names utf8');  //字符集 
 7     }catch(PDOException $e){
 8         die("数据库连接失败".$e->getMessage());
 9     }
10     
11     //2.执行query(查询)返回一个预处理对象
12     $sql= "SELECT * FROM stu";
13     $stmt = $pdo->query($sql);
14     //$list = $stmt->fetchAll();
15     $list = $stmt->fetchAll(PDO::FETCH_ASSOC);    //处理成关联数组
16     
17     //3.解析数据(把所有数据都解析)
18     foreach($list as $val){
19         echo $val['id']."-----".$val['name'].'<br>';
20     }
21     
22     //4.释放资源
23     $stmt = null;
24     $pdo = null;
25     
26     ?>

pdoTest2.php:  快捷的查询方式和增删改操作

 1 <?php
 2     
 3     //1.连接数据库
 4     try{
 5         $pdo = new PDO("mysql:host=localhost;dbname=woodk", "root", "root");
 6         $pdo->query('set names utf8');  //字符集 
 7     }catch(PDOException $e){
 8         die("数据库连接失败".$e->getMessage());
 9     }
10     
11     //2.执行query(查询)  这是一种快捷操作方式
12     $sql= "SELECT * FROM stu";
13     foreach($pdo->query($sql) as $val){
14         echo $val['id']."-----".$val['name'].'<br>';
15     }
16     
17     //插入数据
18     //$sql = "INSERT INTO stu VALUES(null, '王五', '15')";
19     //删除数据
20     //$sql = "DELETE FROM stu WHERE id = 3";
21     //更新数据
22     $sql = "UPDATE stu SET name = '老王' WHERE id = 4";
23     
24     $result = $pdo->exec($sql);
25     if($result){
26         echo '操作成功';
27     }
28     
29 
30     
31     //4.释放资源
32     $stmt = null;
33     $pdo = null;
34     
35     ?>

 

posted @ 2016-01-08 16:42  暖风叔叔  阅读(270)  评论(0编辑  收藏  举报