日韩精品欧美激情国产一区_中文无码精品一区二区三区在线_岛国毛片AV在线无码不卡_亞洲歐美日韓精品在線_使劲操好爽好粗视频在线播放_日韩一区欧美二区_八戒八戒网影院在线观看神马_亚洲怡红院在线色网_av无码不卡亚洲电影_国产麻豆媒体MDX

PHP中PDO的常用方法

時間:2016-07-21 22:55:30 類型:PHP
字號:    
隨著PHP的不斷升級,之前習慣的mysql_connect連接數(shù)據(jù)庫方法大有被新的PDO完全取代之勢,這里把常用方法都試了一遍, 做個整理, 方便大家以后使用
<?php 
  /*
  1, 主機地址:localhost表示本機
  2,dbname:數(shù)據(jù)庫名稱 zhuangzi是我在本地創(chuàng)建的數(shù)據(jù)庫
  3, $db = new PDO($dsn, 'root', 'root');  兩個root分別是連接數(shù)據(jù)庫的用戶名和密碼,
     $db為
  據(jù)庫名稱*/
  $dsn = "mysql:host=localhost;dbname=zhuangzi";//構造數(shù)據(jù)源
  try{
  	  $db = new PDO($dsn, 'root', 'root');//初始化一連接到數(shù)據(jù)庫 zhuangzi 的PDO對象
  }
  catch(Exception $e){
	    echo "數(shù)據(jù)庫連接錯誤";
		exit();
  }
  $db->exec("SET names 'utf8'");
  /*執(zhí)行數(shù)據(jù)庫的插入, 當然student表是已經在數(shù)據(jù)庫中存在的了*/
  $sql = "insert into student set
                      names = '莊子',
					  sex   = '男',
					  hobby = '乒乓球,籃球'";
  $count = $db->exec($sql); 
  //$db->query($sql);
  /*
    需要有記錄結果返回時用exec方法, 否則用query方法
  */
  
  /*執(zhí)行數(shù)據(jù)庫的修改*/
  $sql = "update student set
                      names = '莊子國',
					  sex   = '男',
					  hobby = '足球'
					  where id=19";
  $count = $db->exec($sql); 
  //$db->query($sql);
  
  /*查詢數(shù)據(jù)數(shù)據(jù)庫的表*/
  $sql = "select * from student";
  $result = $db->query($sql);
 /* 
  一行一行的讀取數(shù)據(jù)
  方法1:
  */
  while($row = $result->fetch()){
		echo "ID:".$row["id"]."姓名:".$row["names"]."<br/>";
  }
  
  
 /* 
  方法2:一下子獲取所有記錄,數(shù)字索引和關聯(lián)索引都有,浪費資源
  */
  $result_all = $result->fetchAll();
  foreach($result_all as $row){
	  		echo "ID:".$row["id"]."姓名:".$row["names"]."<br/>";
	  }
  /* 
  方法3:一下子獲取所有記錄,只關聯(lián)名稱索引
  */
   $result->setFetchMode(PDO::FETCH_ASSOC); //只關聯(lián)名稱索引
   $result_arr = $result->fetchAll();
   foreach($result_arr as $row){
	  		echo "ID:".$row["id"]."姓名:".$row["names"]."<br/>";
	  }
	/*
       預編譯的使用,感覺這個與java中的用法是一樣的,更加安全,更加快	
	*/
	
	//用名稱參入參數(shù)
	$sql = 'insert into student (names,sex,hobby) VALUES (:names, :sex,:hobby)';
    $result = $db->prepare($sql);  //返回一個PDOStament 對象
    //綁定數(shù)據(jù) PDOStament對象的bindParam()來綁定參數(shù):占位符,實際數(shù)據(jù)
   
    $result->bindParam(':names',$names);
    $result->bindParam(':sex',$sex);
    $result->bindParam(':hobby',$hobby);
	
	//用位置參入參數(shù)
	$sql = "insert into student(names,sex,hobby) VALUES (?,?,?)";
	$result = $db->prepare($sql);
	$result->bindParam(1, $names);
	$result->bindParam(2, $sex);
	$result->bindParam(3, $hobby);
	$names= '孔子';
    $sex= '男';
    $hobby= '圍棋,周游';
    $result->execute();
  /*
PDO中的查詢操作:exec/query/prepared statement
在PDO中有三種方法執(zhí)行查詢操作,分別是用exec、query和使用prepared statement。三種方法各有利弊,先說exec。
(1)PDO::exec()一般用于執(zhí)行一次的SQL語句,返回受查詢影響的行數(shù)。它不適用于SELECT語句,如果需要用一次是SELECT語句,可以用PDO::query();也不適用于多次使用的語句,如果有多次使用的需求,考慮用PDO::prepare()。
(2)PDO::query()用于執(zhí)行一次SELECT語句,執(zhí)行后應當隨即使用PDOStatement::fetch()語句將結果取出,否則立即進行下一次的PDO::query()將會報錯。
(3)PDOStatement表示一個prepared statement語句,而在執(zhí)行之后,又將返回一組關聯(lián)數(shù)組的結果。如果一類查詢(查詢結構相似而具體的參數(shù)不一)需要一次解析而執(zhí)行使用很多次,可以先用prepared statement,這樣可以為具體的查詢的執(zhí)行做好準備,避免了分析、編譯、優(yōu)化的循環(huán),將減少資源占用率,從而提高運行效率。通過對數(shù)據(jù)庫進行prepare操作,便會返回PDOStatement數(shù)據(jù)類型,從而在其基礎上展開execute、fetch等進一步的操作。

PDO->exec() — 處理一條SQL語句,并返回所影響的條目數(shù)
PDO->lastInsertId() — 獲取寫入的最后一條數(shù)據(jù)的主鍵值
PDO->prepare() — 生成一個“查詢對象”
PDO->query() — 處理一條SQL語句,并返回一個“PDOStatement”
  */

?>