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

首頁 > 開發 > PHP > 正文

php中mysql連接方式PDO使用詳解

2024-05-04 23:31:36
字體:
來源:轉載
供稿:網友
本文主要詳細介紹了PHP中mysql的連接方式PDO的各種使用方法,算是個人的一個小結,如有遺漏還請告之,有需要的小伙伴來參考下吧。
 

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
$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();  
 }  
?> 

 

以上就是關于PHP中pdo的相關用法的全部內容了,希望本文能對大家有所幫助,也希望大家能夠喜歡。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩亚洲一区二区三区| 欧美成人免费播放| 欧美老女人xx| 欧美激情图片区| 国产亚洲视频中文字幕视频| 欧美精品九九久久| 日韩在线不卡视频| 最近2019年日本中文免费字幕| 中文字幕亚洲欧美日韩在线不卡| 久久97久久97精品免视看| 亚洲成年网站在线观看| 久久精品国产一区二区三区| 欧美老妇交乱视频| 久久久久久91香蕉国产| 久久高清视频免费| 国产亚洲精品久久久久久| 一本一道久久a久久精品逆3p| 国产v综合ⅴ日韩v欧美大片| 夜夜躁日日躁狠狠久久88av| 伊人久久五月天| 日韩中文在线中文网在线观看| 一区二区三区四区视频| 欧美极度另类性三渗透| 国产精品流白浆视频| 最近2019免费中文字幕视频三| 欧美日韩国产中文字幕| 91国自产精品中文字幕亚洲| 久久高清视频免费| 视频在线观看一区二区| 日韩福利伦理影院免费| 欧美电影免费观看电视剧大全| 在线观看欧美日韩| 欧美精品www| 久久久久久久影视| 91精品国产91久久久久久最新| 黑人极品videos精品欧美裸| 久久久久久91香蕉国产| 日韩一区av在线| 国产精品网站大全| 国产日韩在线亚洲字幕中文| 国产精品久久99久久| 国产亚洲精品一区二区| 国产亚洲精品91在线| 亚洲香蕉成人av网站在线观看| 欧美视频在线观看免费| 亚洲欧美另类在线观看| 国产精品久久久久久久久久小说| 欧美一级免费看| 成人做爽爽免费视频| 日本中文字幕成人| 欧美精品在线极品| 亚洲色图第一页| 欧美一乱一性一交一视频| 亚洲精品美女在线观看| 最近中文字幕2019免费| 红桃视频成人在线观看| 日韩欧美中文第一页| 亚洲国产日韩一区| 国产精品高潮呻吟视频| 2025国产精品视频| 国产91精品久| 成人h猎奇视频网站| 午夜精品福利视频| 亚洲国产成人精品久久久国产成人一区| 久久久久国产一区二区三区| 亚洲高清色综合| 欧美高清视频在线| 亚洲福利精品在线| 亚洲欧洲偷拍精品| 国产日韩在线亚洲字幕中文| 日本一本a高清免费不卡| xxav国产精品美女主播| 国产精品第8页| 日韩电影网在线| 国产欧美日韩精品专区| 欧美日韩xxx| 久久亚洲国产精品成人av秋霞| 国产精品九九九| 综合国产在线观看| 日韩欧美中文字幕在线观看| 91九色蝌蚪国产| 久久久久久久久亚洲| 亚洲图片欧美日产| 国产亚洲一区二区在线| 在线观看日韩欧美| 日韩av黄色在线观看| 国产亚洲精品久久久久久777| 午夜精品久久久久久99热软件| 欧美乱妇40p| 国产日韩欧美视频| 97视频在线观看免费高清完整版在线观看| 亚洲福利影片在线| 国产精品爽黄69| 国产噜噜噜噜久久久久久久久| 精品视频在线播放| 97免费中文视频在线观看| 国产精品久久久久久久久久久久| 国产一区二区三区高清在线观看| 欧美在线视频免费观看| 7m第一福利500精品视频| 91深夜福利视频| 国产成人亚洲综合91精品| 美日韩精品免费观看视频| 美女黄色丝袜一区| 26uuu另类亚洲欧美日本一| 精品久久久久国产| 91午夜理伦私人影院| 欧美性猛交xxxx乱大交蜜桃| 欧美日韩在线免费| 欧美色另类天堂2015| 国产精品美腿一区在线看| 最新中文字幕亚洲| 欧美亚洲第一区| 欧美综合在线观看| 国产精品成人观看视频国产奇米| 欧美成人午夜激情在线| 亚洲片在线观看| 精品中文字幕乱| 精品久久久久久中文字幕大豆网| 久久久免费精品视频| 欧美一级大片在线免费观看| 日韩专区在线观看| 久久噜噜噜精品国产亚洲综合| 国产精品∨欧美精品v日韩精品| 亚洲深夜福利视频| 亚洲免费一级电影| 欧美极品少妇xxxxⅹ裸体艺术| 亚洲国产成人爱av在线播放| 国产成人综合一区二区三区| 亚洲国产精品嫩草影院久久| 精品国模在线视频| 久久久久久97| 日产日韩在线亚洲欧美| 久久99亚洲热视| 国产精品午夜一区二区欲梦| 尤物yw午夜国产精品视频| 欧美日韩免费区域视频在线观看| 国产成人一区二区在线| 久久九九精品99国产精品| 国产一区二区三区久久精品| 日韩大片免费观看视频播放| 亚洲国产中文字幕在线观看| 亚洲伊人一本大道中文字幕| 亚洲一区二区久久久| 国产精品自产拍高潮在线观看| 亚洲免费成人av电影| 精品久久久久久久久久| 日韩精品在线免费观看视频| 中国人与牲禽动交精品| 久久久久国产精品一区| 2021久久精品国产99国产精品| 中文字幕久久久| 国语自产精品视频在线看抢先版图片| 国产精品丝袜久久久久久高清| 久久精品99无色码中文字幕| 亚洲激情国产精品| 亚洲女性裸体视频| 91亚洲午夜在线| 欧美精品少妇videofree| 91超碰caoporn97人人| 欧美精品精品精品精品免费| www.日韩av.com| 亚洲激情中文字幕| 国产成人久久精品|