加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php PDO 使用方法分析

发布时间:2022-07-05 15:54:25 所属栏目:PHP教程 来源:互联网
导读:PDO::exec:返回的是int类型,表示影响结果的条数. PDOStatement::execute 返回的是boolean型,true表示执行成功,false表示执行失败,这两个通常出现在如下代码: $rs0 = $pdo-exec($sql); define(DB_TYPE,mysql); $dbh = new PDO(DB_TYPE.:host=.DB_HOST.;dbname
  PDO::exec:返回的是int类型,表示影响结果的条数.
 
  PDOStatement::execute
 
  返回的是boolean型,true表示执行成功,false表示执行失败,这两个通常出现在如下代码:
 
  $rs0 = $pdo->exec($sql);
 
 
   define('DB_TYPE','mysql');
  $dbh = new PDO(DB_TYPE.':host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASSWD);
  文中的使用常数设定是我个人的习惯,各位不用像我这么麻烦,当像上面的操作,$dbh 本身就是代表了PDO的连线了,那要怎样使用PDO呢?
 
  第一式 懒人法 query,什么都不用想,像平常一样的使用 query 的函式,代码如下:
 
  $sql = 'select * from test';
  foreach ( $dbh->query($sql) as $value)
  {
      echo $value[col];
  };
  第二式,自动带入法 prepare,我个人使用PDO后,偏好利用 prepare 的函式来进行作动 prepare 的好处是可以先写好 SQL 码,并且在稍后自动带入我们要的资料.
 
  这个我想最大的好处是比起直接利用 query 可以减少许多安全性的问题,首先,我们利用 prepare 进行 SQL 码的设定,在利用bindparm 来进行设定的动作,代码如下:
 
  $sth = $dbh->prepare('update db set zh_CN= :str where SN=:SN');
  $sth->bindParam(':str',$str,PDO::PARAM_STR,12);
  $sth->bindParam(':SN',$SN);
  $sth->execute();
  请注意文中的 :str 及 :SN,当我们利用 bindParam的函式,可以利用 :word 来指定系统需要套用的部份,像是我们利用:str 及 :SN 来指定,而实际的内容,就靠bindParam还可以指定我们要输入的型态。
 
  首先我们先看 :str 的指定,:str 由於我确定资料是属於文字,因此利用 PD::PARAM_STR 来告诉程式“这个是字串哟”,并且给一个范围,也就是长度是12个位元。
 
  我们也可以不要那么复杂,像 :SN,虽然也是用 bindParam 来指定,但是我们省略了型态及长度,PHP 会用该变数预设的型态来套用.
 
   甚至强者如我朋友,把所有可能的 SQL 全写在一个档案后面,后来的过程SQL的部份就变成全用变数带进去了,反正资料可以用现成的方式套用嘛.
 
  那,如果利用 prepare 的方式来 select,关键字当然也可以像上面的方式利用:word 来指定,代码如下:
 
  $sth = $dbh->prepare('select * from db where SN = :SN');
  $sth->bindParam(':SN',$value[SN]);
  $sth->execute();
  while($meta = $sth->fetch(PDO::FETCH_ASSOC))
  {
   echo $meta["name"];
  }
  这样新出现的是 fetch,跟mysql_fetch_row() 的意思差不多,但是在 fetch() 中我们发现多了一个 PDO::FETCH_ASSOC 这个东西.
 
  fetch() 提供了许多获取资料的方式,而 PDO::FETCH_ASSOC 指的就是传回下一笔资料的栏位名及值啦
 
 
  当然有,只要将 PDO::FETCH_ASSOC 改为 PDO::FETCH_BOTH,那用法就跟 mysql_fetch_row() 没什么两样了.
 
  如何除错
 
  除错是所有程式设计师中心中永远的痛,我们使用 PDO 要如何除错呢?
 
  其实 PDO 已经提供了二个非常方便的函式 errorInfo() 及 errorCode()
 
  用法也是世界简单,每当我们利用 execute() 执行后,如果有错误,那 errorInfo() 及 errorCode() 中就会有内容,我们就可以这样子做,代码如下:
 
  $sth = $dbh->prepare('select * from db where SN = :SN');
  $sth->bindParam(':SN',$value[SN]);
  $sth->execute();
  if ($sth->errorCode())
  {
   echo "有错误!有错误!";
 
  1 为你所使用的 Driver 所传回的错误码
 
  2 为你所使用的 Driver 所传回的错误讯息
 
 

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读