最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php使用PDO方法詳解

 更新時間:2014年12月27日 14:37:08   投稿:shichen2014  
這篇文章主要介紹了php使用PDO方法,較為詳細(xì)的分析了PDO各種操作方法與技巧,具有一定的參考借鑒價值,需要的朋友可以參考下

本文詳細(xì)分析了php使用PDO方法。分享給大家供大家參考。具體分析如下:

PDO::exec:返回的是int類型,表示影響結(jié)果的條數(shù).

復(fù)制代碼 代碼如下:
PDOStatement::execute

返回的是boolean型,true表示執(zhí)行成功,false表示執(zhí)行失敗,這兩個通常出現(xiàn)在如下代碼:

復(fù)制代碼 代碼如下:
$rs0 = $pdo->exec($sql);
$pre = $pdo->prepare($sql);
$rs1 = $pre->execute();

一般情況下可以用$rs0的值判斷SQL執(zhí)行成功與否,如果其值為false表示SQL執(zhí)行失敗,0表示沒有任何更改,大于0的值表示影響了多少條記錄.

但是$rs1只能返回SQL執(zhí)行成功與否,如果需要獲取影響的記錄數(shù)需要使用$pre->rowCount();

我個人喜歡使用 MySQL,所以我的 extensions.ini 中有這二行.

復(fù)制代碼 代碼如下:
extension=pdo.so
extension=pdo_mysql.so

接著在程式中,代碼如下:

復(fù)制代碼 代碼如下:
define('DB_NAME','test');
define('DB_USER','test');
define('DB_PASSWD','test');
define('DB_HOST','localhost');
define('DB_TYPE','mysql');
$dbh = new PDO(DB_TYPE.':host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASSWD);

文中的使用常數(shù)設(shè)定是我個人的習(xí)慣,各位不用像我這么麻煩,當(dāng)像上面的操作,$dbh 本身就是代表了PDO的連線了,那要怎樣使用PDO呢?

第一種,懶人法 query,什么都不用想,像平常一樣的使用 query 的函式,代碼如下:

復(fù)制代碼 代碼如下:
$sql = 'select * from test';
foreach ( $dbh->query($sql) as $value)
{
    echo $value[col];
};

第二種,自動帶入法 prepare,我個人使用PDO后,偏好利用 prepare 的函式來進行作動 prepare 的好處是可以先寫好 SQL 碼,并且在稍后自動帶入我們要的資料.

這個我想最大的好處是比起直接利用 query 可以減少許多安全性的問題,首先,我們利用 prepare 進行 SQL 碼的設(shè)定,在利用bindparm 來進行設(shè)定的動作,代碼如下:

復(fù)制代碼 代碼如下:
$sth = $dbh->prepare('update db set zh_CN= :str where SN=:SN');
$sth->bindParam(':str',$str,PDO::PARAM_STR,12);
$sth->bindParam(':SN',$SN);
$sth->execute();

請注意文中的 :str 及 :SN,當(dāng)我們利用 bindParam的函式,可以利用 :word 來指定系統(tǒng)需要套用的部份,像是我們利用:str 及 :SN 來指定,而實際的內(nèi)容,就靠bindParam還可以指定我們要輸入的型態(tài)。

首先我們先看 :str 的指定,:str 由於我確定資料是屬於文字,因此利用 PD::PARAM_STR 來告訴程式“這個是字串喲”,并且給一個范圍,也就是長度是12個位元。

我們也可以不要那么復(fù)雜,像 :SN,雖然也是用 bindParam 來指定,但是我們省略了型態(tài)及長度,PHP 會用該變數(shù)預(yù)設(shè)的型態(tài)來套用.

最后呢,就是利用 $sth->execute(); 來進行執(zhí)行的動作,基本上不難,甚至可以說很簡單呢.

如果你有大量需要重復(fù)套用的資料,你就可以拼了命的重新利用 bindParam 來指定,比如我的:str 及 :SN 如果有十筆資料,我也可以這樣子直接新增到資料庫,代碼如下:

復(fù)制代碼 代碼如下:
$sth = $dbh->prepare('insert into db ("zh_CN","zh_TW")values(:str , :SN');
foreach ($array => $value )
{
 $sth->bindParam(':str',$value[str],PDO::PARAM_STR,12);
 $sth->bindParam(':SN',$value[SN]);
 $sth->execute();
}

甚至強者如我朋友,把所有可能的 SQL 全寫在一個檔案后面,后來的過程SQL的部份就變成全用變數(shù)帶進去了,反正資料可以用現(xiàn)成的方式套用嘛.

那,如果利用 prepare 的方式來 select,關(guān)鍵字當(dāng)然也可以像上面的方式利用:word 來指定,代碼如下:

復(fù)制代碼 代碼如下:
$sth = $dbh->prepare('select * from db where SN = :SN');
$sth->bindParam(':SN',$value[SN]);
$sth->execute();
while($meta = $sth->fetch(PDO::FETCH_ASSOC))
{
 echo $meta["name"];
}

這樣新出現(xiàn)的是 fetch,跟mysql_fetch_row() 的意思差不多,但是在 fetch() 中我們發(fā)現(xiàn)多了一個 PDO::FETCH_ASSOC 這個東西.

fetch() 提供了許多獲取資料的方式,而 PDO::FETCH_ASSOC 指的就是傳回下一筆資料的欄位名及值啦

比如上例,利用 $meta 來取得 fetch 傳回的資料,此時 $meta 的元素名稱就是資料庫的欄位名稱,而內(nèi)容當(dāng)然就是值本身這個跟你利用 mysql_fetch_row() 時不一樣,因為除了欄位名稱,mysql_fetch_row() 還會依照順利將元素名稱除了欄位外在多給予一個以序號的方式為基礎(chǔ)的元素,那難道 PDO 沒有嗎?

當(dāng)然有,只要將 PDO::FETCH_ASSOC 改為 PDO::FETCH_BOTH,那用法就跟 mysql_fetch_row() 沒什么兩樣了.

如何除錯

除錯是所有程式設(shè)計師中心中永遠(yuǎn)的痛,我們使用 PDO 要如何除錯呢?

其實 PDO 已經(jīng)提供了二個非常方便的函式 errorInfo() 及 errorCode()

用法也是世界簡單,每當(dāng)我們利用 execute() 執(zhí)行后,如果有錯誤,那 errorInfo() 及 errorCode() 中就會有內(nèi)容,我們就可以這樣子做,代碼如下:

復(fù)制代碼 代碼如下:
$sth = $dbh->prepare('select * from db where SN = :SN');
$sth->bindParam(':SN',$value[SN]);
$sth->execute();
if ($sth->errorCode())
{
 echo "有錯誤!有錯誤!";
 print_r($sth->errorInfo());
}

而 $sth->errorInfo() 會是一個陣列,這個陣列有三個值:

0 為SQLSTATE error code

1 為你所使用的 Driver 所傳回的錯誤碼

2 為你所使用的 Driver 所傳回的錯誤訊息

希望本文所述對大家的php程序設(shè)計有所幫助。

相關(guān)文章

  • PHP7如何開啟Opcode打造強悍性能詳解

    PHP7如何開啟Opcode打造強悍性能詳解

    這篇文章主要給大家介紹了關(guān)于PHP7如何開啟Opcode打造強悍性能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • 提升PHP性能的21種方法介紹

    提升PHP性能的21種方法介紹

    本篇文章是對提升PHP性能的21種方法進行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • PHP常用數(shù)組函數(shù)介紹

    PHP常用數(shù)組函數(shù)介紹

    編程怎么能少的了數(shù)組呢,以下是學(xué)習(xí)PHP時常用的數(shù)組處理函數(shù)。在編程中要遵循一個原則就是DRY(Don`t Repeat Yourself)原則,PHP中有大量的函數(shù),都記住這些函數(shù)不太現(xiàn)實,但常用的函數(shù)還是要熟練使用的,大部分的函數(shù)的使用方法可以通過查詢PHP的手冊來使用。
    2014-07-07
  • [PHP]實用函數(shù)7

    [PHP]實用函數(shù)7

    [PHP]實用函數(shù)7...
    2007-11-11
  • 解析centos中Apache、php、mysql 默認(rèn)安裝路徑

    解析centos中Apache、php、mysql 默認(rèn)安裝路徑

    本篇文章是對centos下Apache、php、mysql 默認(rèn)安裝路徑進行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • 對squid中refresh_pattern的一些理解和建議

    對squid中refresh_pattern的一些理解和建議

    用于確定一個頁面進入cache后,它在cache中停留的時間。refresh_pattern規(guī)則僅僅應(yīng)用到?jīng)]有明確過時期限的響應(yīng)。原始服務(wù)器能使用Expires頭部,或者Cache-Control:max-age指令來指定過時期限。
    2009-04-04
  • PHP基于CURL發(fā)送JSON格式字符串的方法示例

    PHP基于CURL發(fā)送JSON格式字符串的方法示例

    這篇文章主要介紹了PHP基于CURL發(fā)送JSON格式字符串的方法,結(jié)合實例形式分析了php使用curl發(fā)送json格式字符串的相關(guān)屬性設(shè)置及數(shù)據(jù)接收等操作技巧,需要的朋友可以參考下
    2018-03-03
  • PHP常用的三種設(shè)計模式

    PHP常用的三種設(shè)計模式

    本文為大家介紹常用的三種php設(shè)計模式:單例模式、工廠模式、觀察者模式,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 分析PHP的垃圾回收機制

    分析PHP的垃圾回收機制

    垃圾回收,簡稱gc。在說這個之前先接觸一下內(nèi)存泄露,大概意思就是申請了一塊地兒拉了會兒屎,拉完后不收拾,那么那塊兒地就算是糟蹋了,地越用越少,最后一地全是屎。說到底一句,用了記得還。一定程度上說,垃圾回收機制就是用來擦屁股的。
    2021-06-06

最新評論

枝江市| 桃源县| 马山县| 邵阳县| 安庆市| 青铜峡市| 且末县| 蓝山县| 韩城市| 那坡县| 手机| 长岭县| 和平区| 兴海县| 大关县| 韩城市| 长兴县| 阿鲁科尔沁旗| 射洪县| 忻州市| 平顶山市| 金山区| 东方市| 普定县| 吴忠市| 黄山市| 宝应县| 台江县| 江城| 长子县| 商水县| 瑞昌市| 定结县| 汉沽区| 美姑县| 剑川县| 乌兰县| 长白| 仁布县| 柳江县| 抚松县|