日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

php类模块引擎PDO操作MySQL数据库简单阐述

發(fā)布時(shí)間:2024/4/17 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php类模块引擎PDO操作MySQL数据库简单阐述 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

PDO是什么呢?

  通俗說就是別人寫的一個(gè)“數(shù)據(jù)庫操作工具類”,它非常強(qiáng)大,可以應(yīng)對(duì)市面上幾乎所有主流數(shù)據(jù)庫,

具體應(yīng)用時(shí)候有這樣一個(gè)關(guān)系:

  即,要操作某種數(shù)據(jù),就得去“打開”對(duì)應(yīng)的pdo引擎。

在php.ini的配置文件中,無非就是一個(gè)“模塊”而已,我們只需要把分號(hào)刪掉就表示開啟!如下:

為:

?

?

使用pdo連接mysql數(shù)據(jù)庫

  • $dsn = "mysql:host=服務(wù)器地址/名稱;port=端口號(hào);dbname=數(shù)據(jù)庫名";
  • $opt = array(PDO::MYSQL_ATTR_INIT_COMMAND=>’set names 連接編碼’);?
  • $pdo = new pdo($dsn, "用戶名", "密碼", $opt);
  • 可見,返回的是一個(gè)pdo對(duì)象,

    pdo對(duì)象的使用(常見方法)

    $result = $pdo->query(“返回結(jié)果集的sql語句”);

    結(jié)果:

    成功:就是一個(gè)pdo結(jié)果集對(duì)象(見后續(xù));

    失敗:false;

    $result = $pdo->exec(“增刪改的sql語句”);

    結(jié)果: true(表示成功),false(表示失敗);

    $pdo = null; //銷毀該對(duì)象;

    其他操作

    • $pdo->lastInsertId();

    獲取最后添加的id值

    • $pdo->beginTransaction();:

    開啟一個(gè)事務(wù)

    • $pdo->commit()

    提交一個(gè)事務(wù)

    • $pdo->rollBack();

    回滾一個(gè)事務(wù);

    • $pdo->inTransaction();

    判斷當(dāng)前行是否在事務(wù)中,返回true/false

    • $pdo->setAttribute(屬性名,屬性值);

    設(shè)置pdo對(duì)象的屬性值;

    舉例:$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)

    pdo的錯(cuò)誤處理

    • 靜默模式

      默認(rèn)情況下,pdo采用“靜默模式”處理錯(cuò)誤:

    就是發(fā)生了錯(cuò)誤后,并不提示,而只是返回false。我們需要在程序中去判斷返回是否為fale,然后,如果是false,再去“主動(dòng)”獲取錯(cuò)誤信息。——跟mysql一樣!

    對(duì)比mysql:

    $sql ?= “updateeeee ?tab ?set ?name = ‘a(chǎn)bc'; ”;

    $result ?= ?mysql_query($sql); //這里,執(zhí)行該sql語句,肯定出錯(cuò)

    if( $result ?=== ?false){

      echo “發(fā)生錯(cuò)誤:”??. ?mysql_error();

    }

    else{......}

    則對(duì)pdo來說,大致如此:

    $sql ?= “updateeeee ?tab ?set ?name = ‘a(chǎn)bc’??; ”;

    $result ?= ?$pdo->exec ($sql); //這里,執(zhí)行該sql語句,肯定出錯(cuò)

    if( $result ?=== ?false){

    echo “發(fā)生錯(cuò)誤:”??. ?$pdo->errorInfo(); //這里只是示意;

    //實(shí)際情況是:$pdo->errorInfo()返回的是一個(gè)“數(shù)組”,其中的下標(biāo)為3的項(xiàng),才是錯(cuò)誤提示內(nèi)容

    }

    else{......}

    • 異常模式

      可以簡單理解為:適應(yīng)面向?qū)ο笳Z法的處理錯(cuò)誤的一種語法結(jié)構(gòu)。如下所示:

    try{

    在這里,可以執(zhí)行“可能出錯(cuò)”的語句(多條也可以);

    一旦發(fā)生錯(cuò)誤,就會(huì)終止當(dāng)前范圍的后續(xù)程序執(zhí)行,

    而立即跳轉(zhuǎn)到catch部分——處理錯(cuò)誤!

    }

    catch( Exception ?$e ){

    //一旦發(fā)生錯(cuò)誤,就會(huì)進(jìn)入這里,此時(shí),并會(huì)生成一個(gè)“錯(cuò)誤對(duì)象”;

    //該錯(cuò)誤對(duì)象,就是系統(tǒng)類Exception的一個(gè)實(shí)例:它包含了錯(cuò)誤信息。

    }

      pdo要使用異常模式,就得專門設(shè)置(因?yàn)槠淠J(rèn)是靜默模式):

    ?

    pdo的結(jié)果集對(duì)象(PDOStatement)

    pdo的結(jié)果集對(duì)象從哪里來?

      來自pdo對(duì)象執(zhí)行“返回?cái)?shù)據(jù)集的sql語句”并成功的時(shí)候,得到的就是pdo的結(jié)果集對(duì)象。

    $stmt ?= ?$pdo->query(“select ..... “); //如果執(zhí)行成功,則$stmt就是pdo的結(jié)果集對(duì)象

    pdo結(jié)果集對(duì)象的常用方法

    • $stmt = $pdo->query(“select ...... ”);//這是獲得結(jié)果集
    • $stmt->rowCount() ; //得到結(jié)果集的行數(shù)
    • $stmt->columnCount() ; //得到結(jié)果集的列數(shù)
    • $stmt->fetch( [返回類型] ); //從結(jié)果集中取出“一行”數(shù)據(jù);

    取出的結(jié)果,由其中的“返回類型”來決定,常用的有:

    PDO::FETCH_ASSOC:表示關(guān)聯(lián)數(shù)組
    PDO::FETCH_NUM:表示索引數(shù)組
    PDO::FETCH_BOTH:表示前二者皆有,這是默認(rèn)值
    PDO::FETCH_OBJ:表示對(duì)象

    • $stmt->fetchAll([返回類型]);一次性獲取結(jié)果集中的所有數(shù)據(jù),返回的是一個(gè)二維數(shù)組
    • $stmt->fetchColumn( [$i] );獲取結(jié)果集中的“下一行”數(shù)據(jù)的第$i個(gè)字段的值,結(jié)果是一個(gè)“標(biāo)量數(shù)據(jù)”
    • $stmt->fetchObject();
    • $stmt->errorCode();:pdo結(jié)果集的錯(cuò)誤代號(hào)
    • $stmt->errorInfo();??pdo結(jié)果集的錯(cuò)誤信息(是一個(gè)數(shù)組)
    • $stmt->closeCursor();?關(guān)閉結(jié)果集(相當(dāng)于mysql_close() ?)

    pdo中的預(yù)處理語法

    什么叫預(yù)處理語法

      就是,為了“重復(fù)執(zhí)行”多條結(jié)構(gòu)類似的sql語句,而將該sql語句的形式“進(jìn)行預(yù)先處理”(編譯);

    該sql語句的“形式”中,含有“未給定的數(shù)據(jù)項(xiàng)”。

      然后,到正式執(zhí)行的時(shí)候,只要給定相應(yīng)的形式上的“數(shù)據(jù)項(xiàng)”,就可以更快速方便執(zhí)行。

    比如(有兩種預(yù)定義語法):

    ?

    語法1:

    $sql = “select ?* ?from ?tab ??where ?id = ??“; //這里這個(gè)“?”就是未給定的數(shù)據(jù)項(xiàng);這里通常叫做“占位符”

    //也可以是多個(gè)問好。

    語法2:

    $sql = “select ?* ?from ?tab ??where ?id =?:v1??and ?name ?= ?:v2?“; //這里這個(gè)“:v1”和 “:v2”?就是未給定的數(shù)據(jù)項(xiàng);通常這里叫做“命名參數(shù)”;

    怎么使用?

    分3步:

    1,對(duì)含預(yù)處理語法的sql語句進(jìn)行“預(yù)處理”:

    $stmt = $pdo->prepare( $sql ); //

    2, 對(duì)上述預(yù)處理的結(jié)果對(duì)象($stmt)的未賦值數(shù)據(jù),進(jìn)行賦值:

    $stmt->bindValue( 數(shù)據(jù)項(xiàng)1, 值1);

    $stmt->bindValue( 數(shù)據(jù)項(xiàng)2, 值2);

    。。。。。。

    3, 執(zhí)行;

    $stmt->execute();

    這樣之后,該sql語句就算正式完成!

    ?

    ?

    ?

    ?

    ?

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/bc8web/p/5697711.html

    與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

    總結(jié)

    以上是生活随笔為你收集整理的php类模块引擎PDO操作MySQL数据库简单阐述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。