本文實例講述了php pdo連接數據庫操作。分享給大家供大家參考,具體如下:
pdo連接數據庫的有點是能實現不同數據庫之間的轉換,而且有事務功能的回滾,更有pdo::prepare()
;pdo:::execute()
函數的預處理查詢,所以我個人認為pdo的功能還是比較強大的,所有這篇日志只為我自己而寫,希望看到這篇日志的兄弟們能對你們有所幫助。
要用php連接數據庫首先要要實例化pdo的類,并且要有數據源,服務器賬號,服務器密碼
數據源是數據庫類型,服務器名稱,數據庫名稱的一個集合。
1
2
3
4
5
6
7
8
|
<?php //以下是實例化一個pdo的帶碼 $dsn = "mysql:host=localhost;dbname=tanyong" ; //這就是數據源, $user = "root" ; //這個是服務器的賬號,我的電腦上是這樣,就不知道你們的是不是, $pwd = "" ; //這是我電腦上的服務器密碼,就是我沒設 $pdo = new PDO( $dsn , $user , $pwd ); //實例化一個PDO連接 $pdo ->query( "set names gbk" ); //設置從數據庫里面傳遞過來的數據的編碼格式 ?> |
事務介紹:事務介紹我就通過我自己的理解來講解一遍吧,就是先要關閉數據庫的自動提交功能(什么是自動提交功能?就是當我們寫完一個sql語句后,按回車鍵執行不起,而要經過特殊的代碼處理才能提交上去,后面我會介紹的)
然后寫出你要執行的sql語句并將返回的結果賦給兩個不同的變量,之后提交,如果在執行的時候其中1個或多個發生了錯誤,就進行事務回滾,即使回歸初始狀態(也就是前面在事務處理代碼中的插入或改變或刪除或查詢的語句全部作廢),還有一個優點是不會因為進入其他網頁,或執行其他sql語句而影響到事務處理的進程
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
//以下是事務回滾的代碼簡介 <?php $dsn = "mysql:host=localhost;dbname=tanyong" ; //這就是數據源, $user = "root" ; //這個是服務器的賬號,我的電腦上是這樣,就不知道你們的是不是, $pwd = "" ; //這是我電腦上的服務器密碼,就是我沒設 $pdo = new PDO( $dsn , $user , $pwd ); //實例化一個PDO連接 $pdo ->query( "set names gbk" ); //設置從數據庫里面傳遞過來的數據的編碼格式 $pdo ->begintransaction(); //在這里關閉mysql的自動提交功能 $a = $pdo ->query("insert into tongxue values( '130042106' , '譚勇' , '男' ); $b = $pdo ->query( "insert into tongxue values('130042100','豬八戒','男')" ); if ( $a ==true && $b ==true){ $pdo ->commit(); //提交事務 } else { $pdo ->rollback(); //事務回滾 } ?> |
用mysql_num_rows()
函數能數出數據庫返回結果集的行數,以此來判斷該用戶輸入的用戶名和密碼是否正確,那么在pdo中我們如何實現這個功能呢?
在pdo中有一個函數pdo::fetchall()
,他的作用是將從數據庫返回的一個結果集全部賦給獲取它的值,之后再用count()函數數出行數具體事例代碼如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?php $dsn = "mysql:host=localhost;dbname=tanyong" ; //這就是數據源, $user = "root" ; //這個是服務器的賬號,我的電腦上是這樣,就不知道你們的是不是, $pwd = "" ; //這是我電腦上的服務器密碼,就是我沒設 $pdo = new PDO( $dsn , $user , $pwd ); //實例化一個PDO連接 $pdo ->query( "set names gbk" ); //設置從數據庫里面傳遞過來的數據的編碼格式 $sql = "select * from tongxue where id='130042106'" ; $shuju =pdo->prepare( $sql ); //這就是我們所說的預處理 $shuju ->execute(); //執行預處理的結果; $jg = $shuju ->fetchall(PDO::FETCH_ASSOC); //將返回的結果集以數組的方式全部返回給變量$jg $hangshu = count ( $jg ); //數出結果集的行數 if ( $hangshu >0){ echo '查詢出來是有這個人的' ; } else { echo '查詢出來是沒有這個人的' ; } ?> |
當我們的頁面運行的sql語句較多時,可以用pdo當中的預處理,來減緩服務器的壓力,這對于那些要做大型網站的項目來說是一個不錯的選擇,因為大型網站一天的瀏覽量是幾萬或十幾萬的.
下面我們來看看pdo的預處理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?php $dsn = "mysql:host=localhost;dbname=tanyong" ; //這就是數據源, $user = "root" ; //這個是服務器的賬號,我的電腦上是這樣,就不知道你們的是不是, $pwd = "" ; //這是我電腦上的服務器密碼,就是我沒設 $pdo = new PDO( $dsn , $user , $pwd ); //實例化一個PDO連接 $pdo ->query( "set names gbk" ); //設置從數據庫里面傳遞過來的數據的編碼格式 $sql = "insert into tongxue values('130042100','老師','男')" ; //我們要執行的sql語句 $shuju = $pdo ->prepare( $sql ); //預處理 $shuju ->execute(); //執行預處理的sql語句 if ( $shuju ){ echo '執行成功' ; } else { echo '執行失敗' ; } ?> |
希望本文所述對大家PHP程序設計有所幫助。
原文鏈接:https://blog.csdn.net/u014559227/article/details/70575221