首頁 > 後端開發 > php教程 > php mysql連接方式pdo用法詳解

php mysql連接方式pdo用法詳解

WBOY
發布: 2016-07-25 08:51:40
原創
1171 人瀏覽過
  1. $dbh = new PDO('mysql:host=localhost;dbname=access_control', 'root', '');
  2. $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  3. $dbh->exec('設定名稱 utf8');
  4. /*新增*/
  5. //$sql = "INSERT INTO `user` SET `login`=:login AND `password`=:password";
  6. $sql = "INSERT INTO `user` (`login` ,`password`)VALUES (:login, :password)"; $stmt = $dbh->準備($sql); $stmt->execute(array(':login'=>'kevin2',':password'=>''));
  7. echo $dbh->lastinsertid();
  8. /*修改*/
  9. $sql = "UPDATE `user` SET `password`=:password WHERE `user_id`=:userId";
  10. $stmt = $dbh->準備($sql);
  11. $stmt->execute(array(':userId'=>'7', ':password'=>'4607e782c4d86fd5364d7e4508bb10d9'));
  12. echo $stmt->rowCount();
  13. /*刪除*/
  14. $sql = "DELETE FROM `user` WHERE `login` LIKE 'kevin_'"; //kevin%
  15. $stmt = $dbh->prepare($sql);
  16. $stmt->execute();
  17. echo $stmt->rowCount();
  18. /*查詢*/
  19. $login = 'kevin%';
  20. $sql = "SELECT * FROM `user` WHERE `login` LIKE :login";
  21. $stmt = $dbh->準備($sql);
  22. $stmt->execute(array(':login'=>$login));
  23. while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
  24. print_r($row);
  25. }
  26. print_r( $stmt->fetchAll(PDO::FETCH_ASSOC));
  27. ?>
複製程式碼

1、建立連接

  1. $dbh=newPDO('mysql:host=localhost;port=3306; dbname=test',$user,$ pass ,array(
  2. PDO::ATTR_PERSISTENT=>true
  3. ));
  4. ?>
複製程式碼

複製程式碼

持久性連結PDO::ATTR_PERSISTENT=>true
    2,捕捉錯誤
  1. 嘗試{
  2. $dbh=newPDO('mysql:host=localhost;dbname=test',$user, $dbh=newPDO('mysql:host=localhost;dbname=test',$user, $ $ pass);
  3. $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
  4. $dbh->exec("設定字元集utf8");
  5. $dbh=null ; // 斷線
  6. }catch(PDOException$e){
print"Error!:".$e->getMessage()."
";
die() ; }?>

複製程式碼
    3,pdo事務
  1. 嘗試{
  2. $dbh->setAttribute(PDO::ATTR_ERRMODE,PDOfERRMODE_EXCEPTIONRMODE_ dbh->beginTransaction();//開啟交易
  3. $dbh->exec("insertintostaff(id,first,last)values(23,'Joe','Bloggs')");
  4. $dbh- >exec("insertintosalarychange(id,amount,changedate)
  5. values(23,50000,NOW())");
  6. $dbh->commit();//提交事務
  7. }catch(Exception $e){
  8. $dbh->rollBack();//錯誤回滾
  9. echo"失敗:".$e->getMessage();
}
?>

複製程式碼

4. 錯誤處理 一。
  1. 嘗試{
  2. $dbh = new PDO($dsn, $user, $password);
  3. $sql = '從 CountryCode =:國家的城市中選擇 *';
  4. $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  5. $stmt = $dbh->準備($sql);
  6. $stmt->bindParam(':country', $country, PDO::PARAM_STR);
  7. $stmt->execute();
  8. while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
  9. print $row['Name'] 。 「/t」;
  10. }
  11. } // 如果有問題我們可以在這裡處理
  12. catch (PDOException $e) {
  13. echo 'PDO Exception Caught. ';
  14. echo '資料庫錯誤:
    ';
  15. echo 'SQL查詢:', $sql;
echo '錯誤:' 。
} ?>

複製程式碼

1,使用query()
  1. $dbh->query($sql); 當$sql中變數可以用$dbh->quote($params); //轉義字串的資料
  2. $sql = 'Select * from city where CountryCode ='.$dbh->quote($country);
  3. foreach ($dbh->query($sql) as $row) {
  4. print $row['Name'] 。 “/t”;
  5. 印出 $row['CountryCode'] 。 “/t”;
印出 $row['Population'] 。 >
複製程式碼

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

  1. $dbh->prepare($sql); 產生了個PDOStatement物件
  2. PDOStatement->bindParam()
  3. PDOStatement->execute();//可以在這裡放綁定的對應變數
  4. ?>
複製程式碼

3、php pdo交易範例

  1. try {
  2. $dbh = new PDO('mysql:host=localhost;dbname=test', 'root' , '');
  3. $dbh->query('set names utf8;');
  4. $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  5. $bhd->Transgindaction ();
  6. $dbh->exec("Insert INTO `test`.`table` (`name` ,`age`)VALUES ('mick', 22);");
  7. $dbh-> exec("Insert INTO `test`.`table` (`name` ,`age`)VALUES ('lily', 29);");
  8. $dbh->exec("Insert INTO `test`.` table` (`name` ,`age`)VALUES ('susan', 21);");
  9. $dbh->commit();
  10. } catch (Exception $e) {
  11. $dbh ->rollBack();
  12. echo "Failed: " . $e->getMessage();
  13. }
  14. ?>
複製代碼


來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板