<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      川山甲

      追求內(nèi)心的非常平靜!瞬間清空所有的雜念,達(dá)到物我兩忘!

        博客園  :: 首頁(yè)  ::  :: 聯(lián)系 :: 訂閱 訂閱  :: 管理
      介紹
       
      今天發(fā)現(xiàn)php5.1.*和php5.2.*在數(shù)據(jù)庫(kù)預(yù)編譯代碼執(zhí)行的時(shí)候出現(xiàn)差異。
       
      預(yù)編譯優(yōu)點(diǎn)

      1.使用占位符,避免逐字輸入數(shù)據(jù)到SQL中。自動(dòng)處理引號(hào)和反斜線等字符的轉(zhuǎn)義——增加安全性。

      2.預(yù)先“準(zhǔn)備”一條語(yǔ)句,然后在每次執(zhí)行時(shí)綁定不同值達(dá)到重用的目的。——常用于以后被多次執(zhí)行的語(yǔ)句。

      3.可讀性強(qiáng)。

       

      代碼
      數(shù)據(jù)庫(kù)連接代碼都一樣.
       
      $protol = 'mysql:host=localhost;dbname=test';
      $username = 'monty';
      $passwd = '0818';
      $dbh = new PDO($protol, $username, $passwd);
      

      以下是一些測(cè)試。注意里面的SQL和for或者foreach語(yǔ)句!

      測(cè)試1(用key值進(jìn)行綁定)

      $stmt = $dbh->prepare('select * from t1 where name=:name');
      $params = array();
      $params['name'] = 'rentao';
      
      foreach($params as $k=>$v){
          $stmt->bindParam($k, $v);
      }
      $stmt->execute();
      
      $item = array();
      while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
          var_dump($row);
      }
      $stmt = null;
      $dbh = null;
      

       結(jié)論:

      PHP 5.1.* PHP 5.2.*
      執(zhí)行正常 執(zhí)行正常
      $params['name'] = 'rentao' 和$params[':name']='rentao'這兩個(gè)都能執(zhí)行,說(shuō)明不受“:”限制。

      測(cè)試2(數(shù)字下標(biāo)去綁定,但是綁定的起始參數(shù)是1)——":key"在php5.2.*上不能用數(shù)字下標(biāo)綁定

      $stmt = $dbh->prepare('select * from t1 where name=:name limit 2');
      $params = array();
      $params[] = 'rentao';// 這里加不加":"都能成功執(zhí)行
      
      
      for($i=0,$iLen = count($params); $i < $iLen; $i++){
          $k = $i+1;
          $stmt->bindParam($k, $params[$i]);
      }
      echo "HERE1\n";
      $stmt->execute();
      echo "HERE2\n";
      
      $item = array();
      介紹
       
      while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
          var_dump($row);
      }
      $stmt = null;
      $dbh = null;
      

       結(jié)論:

      php 5.1.* PHP 5.2.*
      執(zhí)行正常 出現(xiàn)錯(cuò)誤:“PHP Warning:  PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined”
      如果把":name"改成"?",那么兩個(gè)版本都可以順利進(jìn)行。
      不能同時(shí)使用兩種符號(hào)。如 select * from t2 where name=? limit :page

       

       測(cè)試3(limit綁定:page)
      $stmt = $dbh->prepare('select * from t2 where name=:name  limit :page');
      $params = array();
      $params['name'] = 'rentao';// 這里加不加":"都能成功執(zhí)行
      $params['page'] = 2;
      
      foreach($params as $k=>$v){
          $stmt->bindParam($k, $v);
      }
      $stmt->execute();
      echo "HERE1\n";
      $item = array();
      while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
          var_dump($row);
      }
      echo "HERE2\n";
      $stmt = null;
      $dbh = null;
      

       

      結(jié)論:

      PHP 5.1.* PHP 5.2.*
      執(zhí)行到$stmt->execute()時(shí),進(jìn)程一直處于等待狀態(tài)中 執(zhí)行正常:打印不出結(jié)果

       

       

       測(cè)試4(在limit下進(jìn)行預(yù)編譯操作:page)——使用“?”機(jī)制運(yùn)行
      $stmt = $dbh->prepare('select *  from t2 where name=? limit ?');
      $params = array();
      $params[] = 'rentao'; 
      $params[] = 2;
      
       
      
      for($i=0,$iLen = count($params); $i < $iLen; $i++){
          $k = $i+1;
          $stmt->bindParam($k, $params[$i]);
      }
       
      $stmt->execute();
      
      
      $item = array();
      while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
          var_dump($row);
      }
      $stmt = null;
      $dbh = null;
      
      PHP 5.1.* PHP 5.2.*
      執(zhí)行正常 執(zhí)行正常:打印不出結(jié)果

      測(cè)試5---order by)

      PHP 5.1.* PHP 5.2.*
      打印出結(jié)果,但未按order by進(jìn)行排序 執(zhí)行正常:打印不出結(jié)果
       
       
      寫問(wèn)題
       
      數(shù)據(jù)庫(kù)寫操作,我們用的都是數(shù)字下標(biāo)綁定的辦法(function execute(){})。所以,凡是做寫入操作的必須用"?"的形式,否則不支持綁定。
       
      總結(jié)
      PHP在使用PDO做數(shù)據(jù)庫(kù)預(yù)編譯操作的時(shí)候,盡量避免使用limit, order by, group by 做預(yù)編譯處理。綁定變量我們盡量使用統(tǒng)一標(biāo)準(zhǔn),要不然都使用“?”,要不然使用“:key”。
       
      有用的命令,我在php5.1.*進(jìn)行測(cè)試,測(cè)試完了,我通過(guò)scp把文件傳輸?shù)絧hp5.2.*服務(wù)器上
      scp -P9888 index.php rentao@192.168.10.4:/home/rentao
      

       

      posted on 2012-03-05 13:19  川山甲  閱讀(4556)  評(píng)論(4)    收藏  舉報(bào)
      主站蜘蛛池模板: av中文字幕一区二区| 国产国产乱老熟女视频网站97| 久久夜色噜噜噜亚洲av| 成人免费看片又大又黄| 最新的国产成人精品2020| 国产精品看高国产精品不卡| 国产一区二区在线观看的| 榆树市| 日本高清不卡一区二区三| 亚洲国产在一区二区三区| 亚洲制服无码一区二区三区| 亚洲区一区二区三区精品| 中文字幕久久精品波多野结| 欧美人与zoxxxx另类| 亚洲色www永久网站| 色欲狠狠躁天天躁无码中文字幕| 亚洲自偷自拍另类小说| 九九久久人妻一区精品色| 99久久国产综合精品成人影院| 浴室人妻的情欲hd三级国产| 蒲江县| 日本一区二区三区专线| 成人看的污污超级黄网站免费| 亚洲精品理论电影在线观看| 午夜成年男人免费网站| 最近中文国语字幕在线播放| 99国产精品白浆在线观看免费 | 久久夜色噜噜噜亚洲av| 国产av日韩精品一区二区| 免费乱理伦片在线观看| 久草热8精品视频在线观看| 伊人av超碰伊人久久久| 疯狂做受xxxx高潮欧美日本| a4yy私人毛片| 99re6这里有精品热视频 | 成人无码午夜在线观看| 国产老熟女一区二区三区| 亚洲AV美女在线播放啊| 亚洲国产中文字幕精品| 国产一区二区三区精美视频| 97久久人人超碰国产精品|