PDOStatement 预处理对象的使用
一 插入数据 问号占位符形式绑定参数
try { //1 先发送一条SQL语句让服务器去编译 值用问号代替 并返回一个预处理对象 赋值给$stmt $stmt = $pdo->prepare('insert into yunu_diy_article(ftitle,author) value (?,?)'); var_dump($stmt); //2 绑定参数 对应的是问号写法 从1开始 只能绑定到变量名 $stmt->bindParam(1,$ftitle); $stmt->bindParam(2,$author); //3 给变量赋值 $ftitle = '孙权'; $author = '孙仲谋'; //4 执行一条预处理SQL $stmt->execute(); //再插入一条 $ftitle = '诸葛亮'; $author = "诸葛孔明"; $stmt->execute(); } catch (PDOException $e) { echo $e->getMessage(); }
//简洁写法 try { //1定义一条 问号 占位符的预处理语句SQL $stmt = $pdo->prepare('insert into yunu_diy_article(ftitle,author) value (?,?)'); //2 绑定和执行一起操作 问号占位符传递索引数组 $stmt->execute(['汉武帝','刘彻']); } catch(PDOException $e) { echo $e->getMessage(); }
插入数据:命名占位符形式绑定参数
//常规写法 try { //1定义一条 命名 占位符的预处理语句SQL $stmt = $pdo->prepare('insert into yunu_diy_article(ftitle,author) value (:ftitle,:author)'); //2 绑定参数到变量 $stmt->bindParam(':ftitle',$ftitle); $stmt->bindParam(':author',$author); //3 给变量赋值 $ftitle = '胡汉三'; $author = "刘三姐"; //4 执行预处理SQL语句 $stmt->execute(); } catch(PDOException $e) { echo $e->getMessage(); }
//简洁写法 try { //1定义一条命名占位符的预处理语句SQL $stmt = $pdo->prepare('insert into yunu_diy_article(ftitle,author) value (:ftitle,:author)'); //2 绑定和执行一起操作 命名占位符 传递关联数组 $stmt->execute([':ftitle'=>'汉武帝',':author'=>'刘彻']); } catch(PDOException $e) { echo $e->getMessage(); }
二 删除数据
try { //删除操作 命名占位符 $stmt = $pdo->prepare('delete from yunu_diy_article where conid = :num '); $stmt->execute(['num' =>67]); //删除操作 问号占位符 $stmt = $pdo->prepare('delete from yunu_diy_article where conid = ?'); $stmt->execute([65]);//删除id为65的一行数据 } catch(PDOException $e) { echo $e->getMessage(); }
三 更新操作
try { //更新操作 命名占位符 $stmt = $pdo->prepare('update yunu_diy_article set ftitle=:ftitle,author=:author where conid = :num '); $stmt->execute([':ftitle' =>'猪八戒',':author'=>'天蓬元帅',':num'=>66]); //更新操作 问号占位符 $stmt = $pdo->prepare('update yunu_diy_article set ftitle=?,author=? where conid=?'); $stmt->execute(['孙悟空','齐天大圣',66]); } catch(PDOException $e) { echo $e->getMessage(); }
四 查询操作
try { //1 准备SQL语句 并得到预处理对象 $stmt = $pdo->prepare('select ftitle,author from yunu_diy_article'); //2 执行预处理语句 结果集已经放回给$stmt $stmt->execute();//执行完成后 就获得了一个结果集 结果集就存放在$stmt对象上 //3 获取结果集中的一行 或者 全部 $result = $stmt->fetch(PDO::FETCH_OBJ);//获取结果集中的一行数据 第一个参数设置返回值的格式 $result = $stmt->fetchAll(PDO::FETCH_OBJ);//获取结果集中的所有数据 //fetch / fetchAll(参数1:设置结果集的提取模式) 常用的有四种 //1. PDO::FETCH_BOTH 默认的 返回格式:关联数组+索引数组 //2. PDO::FETCH_ASSOC 返回格式:关联数组 //3. PDO::FETCH_NUM 返回格式:索引数组 //4. PDO::FETCH_OBJ 返回格式:对象形式 var_dump($result); } catch(PDOException $e) { echo $e->getMessage(); }
查询数据:绑定列
try { //1 准备SQL语句 并得到预处理对象 $stmt = $pdo->prepare('select ftitle,author from yunu_diy_article'); //2 执行预处理语句 结果集已经放回给$stmt $stmt->execute();//执行完成后 就获得了一个结果集 结果集就存放在$stmt对象上 //3 绑定列 $stmt->bindColumn('ftitle',$ftitle); $stmt->bindColumn('author',$author); while ($stmt->fetch()) { echo $ftitle .'的作者是:'. $author.'</br>'; } } catch(PDOException $e) { echo $e->getMessage(); }