使用pdo的代码执行速度与传统模式的速度相当。但在代码执行安全性方面,pdo使用预处理模式的安全性较高,并且使用pdo模式可以解决跨数据库平台操作。
以下是pdo连接使用数据库实例:

创建一个连接数据库类

class DbBase{    
    public $pdo;        
    public function __construct($db_host=FALSE, $db_name=FALSE, $db_user=FALSE, $db_pwd=FALSE){
    $db_host = !empty($db_host)? $db_host :DB_HOST;
    $db_name = !empty($db_name)? $db_name :DB_NAME;
    $db_user = !empty($db_user)? $db_user :DB_USER;
    $db_pwd = !empty($db_pwd)? $db_pwd :DB_PWD;
        $this->pdo = new PDO('mysql:host='.$db_host.';dbname='.$db_name,$db_user,$db_pwd);
        $this->pdo->exec("set names utf8");
        $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
}

连接数据库并执行

$obj = new DbBase('host','dbname','username','pwd');    
    $sql = 'SELECT * FROM pdo';
    $obj_re = $obj->pdo->query($sql);
    while($value=$obj_re->fetch(PDO::FETCH_ASSOC)){
        print_r($value);
    }

使用query方法执行sql语句,最后使用fetch()函数循环并打印结果fetch()可以设置不同的返回结果

POD::FETCH_NUM 每行按字段位置索引的数组,从0开始
POD::FETCH_BOTH NUM和ASSOC的直接组合,为默认方式
POD::FETCH_CLASS 通过指定类名,返回一个类的实例
POD::FETCH_COLUMN 返回当前指定列,返回一行数据
POD::FETCH_ASSOC 每行按字段名索引的数组

也可以使用预执行语句操作数据库

 $sql = "SELECT * FROM pdo WHERE name = :name";
    $obj_re = $obj->pdo->prepare($sql);
    $name = 'test3';
    $obj_re->bindParam(":name",$name,PDO::PARAM_STR);
    $obj_re->execute();
    $re = $obj_re->fetchAll();

标签: none

添加新评论