亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

php mysql PDO 查詢操作的實例詳解

2024-05-05 00:00:14
字體:
來源:轉載
供稿:網友

php/1937.html">php mysql/44619.html">mysql/40187.html">mysql PDO 查詢操作的實例詳解

<?php $dbh = new PDO('mysql:host=localhost;dbname=access_control', 'root', '');  $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  $dbh->exec('set names utf8');  /*添加*/ //$sql = "INSERT INTO `user` SET `login`=:login AND `password`=:password";  $sql = "INSERT INTO `user` (`login` ,`password`)VALUES (:login, :password)"; $stmt = $dbh->prepare($sql); $stmt->execute(array(':login'=>'kevin2',':password'=>''));  echo $dbh->lastinsertid();  /*修改*/ $sql = "UPDATE `user` SET `password`=:password WHERE `user_id`=:userId";  $stmt = $dbh->prepare($sql);  $stmt->execute(array(':userId'=>'7', ':password'=>'4607e782c4d86fd5364d7e4508bb10d9'));  echo $stmt->rowCount();  /*刪除*/ $sql = "DELETE FROM `user` WHERE `login` LIKE 'kevin_'"; //kevin%  $stmt = $dbh->prepare($sql);  $stmt->execute();  echo $stmt->rowCount();  /*查詢*/ $login = 'kevin%';  $sql = "SELECT * FROM `user` WHERE `login` LIKE :login";  $stmt = $dbh->prepare($sql);  $stmt->execute(array(':login'=>$login));  while($row = $stmt->fetch(PDO::FETCH_ASSOC)){     print_r($row);  }  print_r( $stmt->fetchAll(PDO::FETCH_ASSOC));  ?> 

1 建立連接

<?php $dbh=newPDO('mysql:host=localhost;port=3306; dbname=test',$user,$pass,array( PDO::ATTR_PERSISTENT=>true )); ?> 

持久性鏈接PDO::ATTR_PERSISTENT=>true

2. 捕捉錯誤

<?php try{ $dbh=newPDO('mysql:host=localhost;dbname=test',$user,$pass);  $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);  $dbh->exec("SET CHARACTER SET utf8"); $dbh=null; //斷開連接 }catch(PDOException$e){ print"Error!:".$e->getMessage()."<br/>"; die(); } ?> 

3. 事務的

<?php try{ $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);  $dbh->beginTransaction();//開啟事務 $dbh->exec("insertintostaff(id,first,last)values(23,'Joe','Bloggs')"); $dbh->exec("insertintosalarychange(id,amount,changedate) values(23,50000,NOW())"); $dbh->commit();//提交事務  }catch(Exception$e){ $dbh->rollBack();//錯誤回滾 echo"Failed:".$e->getMessage(); } ?> 

4. 錯誤處理

a. 靜默模式(默認模式)

$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_SILENT); //不顯示錯誤$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);//顯示警告錯誤,并繼續執行$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);//產生致命錯誤,PDOException
<?php try{    $dbh = new PDO($dsn, $user, $password);    $sql = 'Select * from city where CountryCode =:country';    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);    $stmt = $dbh->prepare($sql);    $stmt->bindParam(':country', $country, PDO::PARAM_STR);    $stmt->execute();    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {     print $row['Name'] . "/t";    }  }  // if there is a problem we can handle it here  catch (PDOException $e) {    echo 'PDO Exception Caught. ';    echo 'Error with the database: <br />';    echo 'SQL Query: ', $sql;    echo 'Error: ' . $e->getMessage();  }  ?> 

1. 使用 query()

<?php $dbh->query($sql); 當$sql 中變量可以用$dbh->quote($params); //轉義字符串的數據  $sql = 'Select * from city where CountryCode ='.$dbh->quote($country);  foreach ($dbh->query($sql) as $row)  {    print $row['Name'] . "/t";    print $row['CountryCode'] . "/t";    print $row['Population'] . "/n";  }  ?> 

2. 使用 prepare, bindParam和 execute [建議用,同時可以用添加、修改、刪除]

<?php $dbh->prepare($sql); 產生了個PDOStatement對象  PDOStatement->bindParam()  PDOStatement->execute();//可以在這里放綁定的相應變量 ?> 

3. 事物

<?php   try {   $dbh = new PDO('mysql:host=localhost;dbname=test', 'root', '');   $dbh->query('set names utf8;');   $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);   $dbh->beginTransaction();   $dbh->exec("Insert INTO `test`.`table` (`name` ,`age`)VALUES ('mick', 22);");   $dbh->exec("Insert INTO `test`.`table` (`name` ,`age`)VALUES ('lily', 29);");   $dbh->exec("Insert INTO `test`.`table` (`name` ,`age`)VALUES ('susan', 21);");   $dbh->commit();   } catch (Exception $e) {   $dbh->rollBack();   echo "Failed: " . $e->getMessage();   }  ?>  

PDO常用方法:

PDO::query()主要用于有記錄結果返回的操作(PDOStatement),特別是select操作。
PDO::exec()主要是針對沒有結果集合返回的操作。如insert,update等操作。返回影響行數。
PDO::lastInsertId()返回上次插入操作最后一條ID,但要注意:如果用insert into tb(col1,col2) values(v1,v2),(v11,v22)..的方式一次插入多條記錄,lastinsertid()返回的只是第一條(v1,v2)插入時的ID,而不是最后一條記錄插入的記錄ID。
PDOStatement::fetch()是用來獲取一條記錄。配合while來遍歷。
PDOStatement::fetchAll()是獲取所有記錄集到一個中。
PDOStatement::fetchcolumn([int column_indexnum])用于直接訪問列,參數column_indexnum是該列在行中的從0開始索引值,但是,這個方法一次只能取得同一行的一列,只要執行一次,就跳到下一行。因此,用于直接訪問某一列時較好用,但要遍歷多列就用不上。
PDOStatement::rowcount()適用于當用query("select ...")方法時,獲取記錄的條數。也可以用于預處理中。$stmt->rowcount();
PDOStatement::columncount()適用于當用query("select ...")方法時,獲取記錄的列數。

注解:

1、選fetch還是fetchall?

小記錄集時,用fetchall效率高,減少從數據庫檢索次數,但對于大結果集,用fetchall則給系統帶來很大負擔。數據庫要向WEB前端傳輸量太大反而效率低。

2、fetch()或fetchall()有幾個參數:

mixed pdostatement::fetch([int fetch_style [,int cursor_orientation [,int cursor_offset]]])array pdostatement::fetchAll(int fetch_style)

fetch_style參數:

■$row=$rs->fetchAll(PDO::FETCH_BOTH); FETCH_BOTH是默認的,可省,返回關聯和索引。
■$row=$rs->fetchAll(PDO::FETCH_ASSOC); FETCH_ASSOC參數決定返回的只有關聯數組。
■$row=$rs->fetchAll(PDO::FETCH_NUM); 返回索引數組
■$row=$rs->fetchAll(PDO::FETCH_OBJ); 如果fetch()則返回對象,如果是fetchall(),返回由對象組成的二維數組

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕久热精品在线视频| 久久久久久午夜| 欧美日韩视频在线| www.精品av.com| 亚洲视频自拍偷拍| 久久视频免费在线播放| 久久天天躁狠狠躁夜夜爽蜜月| 国产免费一区二区三区在线能观看| 国产精品美女呻吟| 色琪琪综合男人的天堂aⅴ视频| 亚洲欧美国产日韩天堂区| 欧美俄罗斯性视频| 久久最新资源网| 日韩av综合网站| 久久久久久久久久久人体| 韩剧1988在线观看免费完整版| 欧美一区二区三区四区在线| 91在线视频精品| 欧美黑人xxxⅹ高潮交| 日韩激情片免费| 精品久久香蕉国产线看观看亚洲| 久热99视频在线观看| 久久在线免费观看视频| 国产欧美精品va在线观看| 青青精品视频播放| 欧美性精品220| 色偷偷91综合久久噜噜| 亚洲天堂第一页| 国产精品久久久久久久久久99| 日韩免费av在线| 97久久久久久| 亚洲成av人片在线观看香蕉| 亚洲影院污污.| 日韩欧美精品中文字幕| 韩国三级电影久久久久久| 亚洲无线码在线一区观看| 国外色69视频在线观看| 国产成人综合一区二区三区| 国产va免费精品高清在线| 超薄丝袜一区二区| 日韩欧美在线国产| 亚洲性av在线| 国产精品久久久久久久久久久久| 国产精品自拍偷拍视频| 精品久久久久久中文字幕| 久久久久久香蕉网| 国产精品网站入口| 欧美电影在线免费观看网站| 久久精品国产亚洲| 欧美大尺度电影在线观看| 国产精品亚洲网站| 日本三级久久久| 亚洲的天堂在线中文字幕| 亚洲精品91美女久久久久久久| 欧美成人精品一区二区| 国产精品久久久久久久av大片| 亚洲美女久久久| www.久久久久| 福利二区91精品bt7086| 三级精品视频久久久久| 日本精品久久久| 91精品国产91久久久久久吃药| 在线激情影院一区| 国产经典一区二区| 久久久久久国产精品三级玉女聊斋| 91久久久久久久久| 久久精品视频在线播放| 亚洲欧美精品中文字幕在线| 欧美性生交大片免费| 久久久久日韩精品久久久男男| 91精品国产自产在线观看永久| 成人免费xxxxx在线观看| 精品福利在线观看| 精品视频久久久久久久| 日韩精品中文字幕在线| 日韩免费av片在线观看| 日韩欧美在线视频| 成人激情综合网| 欧美成人午夜免费视在线看片| 91精品国产综合久久香蕉最新版| 亚洲色图国产精品| 国产精品第100页| 国产日韩欧美在线播放| 亚洲bt欧美bt日本bt| 九九久久久久99精品| 国产精品成人国产乱一区| 97色在线观看免费视频| 中文字幕免费精品一区| 日av在线播放中文不卡| 国产欧美日韩最新| 伊人激情综合网| 国产午夜精品全部视频在线播放| 日韩欧美国产网站| 亚洲欧洲国产伦综合| 91亚洲精品久久久久久久久久久久| 亚洲欧美国产一区二区三区| 国产精品视频网| 91精品国产99久久久久久| 92看片淫黄大片欧美看国产片| 成人性生交大片免费观看嘿嘿视频| 亚州欧美日韩中文视频| 国产精品久久久91| 色综合久久久久久中文网| 91久久精品国产91性色| 欧美激情影音先锋| 亚洲国产精品久久久久秋霞不卡| 欧美黑人xxxⅹ高潮交| 亚洲欧美日韩久久久久久| 日韩中文字幕在线精品| 日韩人体视频一二区| 色综久久综合桃花网| 97视频网站入口| 国产精品老女人视频| 成人乱色短篇合集| 久久精品亚洲一区| 成人黄色免费看| 欧美激情国产高清| 91精品国产91久久久久久吃药| 欧美日韩国产页| 亚洲视屏在线播放| 国产精品第一第二| 亚洲精品mp4| 国产精品99蜜臀久久不卡二区| 国产成人拍精品视频午夜网站| 91精品免费视频| 日韩欧美在线网址| 国产精品一区二区久久久| 欧美韩国理论所午夜片917电影| 国产xxx69麻豆国语对白| 日韩在线视频观看正片免费网站| 久久777国产线看观看精品| 在线亚洲国产精品网| 45www国产精品网站| www国产精品com| 欧美一区二区视频97| 久久精品中文字幕| 日韩激情视频在线| 欧美一级淫片播放口| 国产在线拍揄自揄视频不卡99| 欧美xxxx18国产| 欧美日韩美女在线观看| 在线观看欧美日韩国产| 国产精品你懂得| 俺去啦;欧美日韩| 成人黄色在线观看| 2018国产精品视频| 亚洲电影第1页| 日本一欧美一欧美一亚洲视频| 精品久久久久久国产91| 久久6免费高清热精品| 国产啪精品视频网站| 欧美一级视频免费在线观看| 久久久黄色av| 尤物精品国产第一福利三区| 91精品国产综合久久久久久久久| 九九热在线精品视频| 国语自产在线不卡| 色悠悠久久久久| 中文字幕一精品亚洲无线一区| 97在线视频免费看| 欧美日韩国产精品专区| 91精品国产91久久久久久| 国产亚洲a∨片在线观看| 亚洲成人1234|