PDO预处理之读操作:
$dsn = "mysql:host=localhost;dbname=demo;charset=utf8"; $pdo = new PDO($dsn,'root','root'); $sql = "SELECT `id`,`name`,`email` FROM user1 WHERE `id`=:id"; //1.准备SQL语句,生成对象 $pdoStmt = $pdo->prepare($sql); if(true == $pdoStmt){ // $res = $pdoStmt->execute(['id'=>2]); $id = 5; //2.绑定参数 $pdoStmt->bindParam('id',$id); //3.执行 $res = $pdoStmt->execute(); if($res){ //判断结果集数量 if($pdoStmt->rowCount()>0){ // print_r($pdoStmt->fetch(PDO::FETCH_ASSOC)); //设置取出方式,关联数组 $pdoStmt->setFetchMode(PDO::FETCH_ASSOC); //取出数据 print_r($pdoStmt->fetch()); } } }
PDO之写操作(以新增为例):
$dsn = "mysql:host=localhost;dbname=demo;charset=utf8"; $pdo = new PDO($dsn,'root','root'); $sql = "INSERT user1 SET `name`=:name,`email`=:email,`password`=sha1(:password)"; $pdoStmt = $pdo->prepare($sql); //print_r($pdoStmt); $data = ['name'=>'张无忌','email'=>'zwj@php.cn','password'=>'123456']; //$pdoStmt->bindParam('name',$data['name'],) $res = $pdoStmt->execute($data); var_dump($res);
总结:
1.预处理操作实用 名称占位符 :name : email
2.预处理操作步骤: (1)准备SQL语句 生成 $pdoStmt 对象 (2)绑定参数 方法一 在执行时直接放置 数据参数
$pdoStmt->execute($data array) ,方法二:$pdoStmt->bindParam('id',$id) 一次绑定一个
(3)执行:与常用操作不同 读写均实用 $pdoStmt->execute()执行。写曹组I直接返回布尔值,读操作返回结果集
使用 $pdoStmt->rowCount() 获取结果集数量,通过两种方式改变输出形式(执行后返回的是关联加数组的结果集)
方法一:$pdoStmt->fetch(PDO::FETCH_ASSOC) or $pdoStmt->fetchAll(PDO::FETCH_ASSOC)
方法二:$pdoStmt->setFetchMode(PDO::FETCH_ASSOC)后取出