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

歡迎訪問 生活随笔!

生活随笔

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

数据库

php通过Mysqli和PDO连接mysql数据详解

發(fā)布時(shí)間:2024/9/20 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php通过Mysqli和PDO连接mysql数据详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

在實(shí)際開發(fā)中,關(guān)于數(shù)據(jù)庫操作類,很少是自己去寫,大多是通過一些框架去實(shí)現(xiàn),突然自己去寫,還是需要借閱手冊(cè)之類,于是我覺得有必要去總結(jié)一下,php連接mysql的方法,php連接mysql,可以通過mysql擴(kuò)展、mysqli擴(kuò)展,pdo擴(kuò)展,因?yàn)楦甙姹镜膒hp將移除mysql_系列方法,故在此只總結(jié)另外兩種連接方式。首先我們得確保php的這兩個(gè)擴(kuò)展是否已經(jīng)打開,查看php.ini配置文件如下:

提示,如有有的人說,我打開了擴(kuò)展庫(即去掉了,前面的';'),仍然一直提示mysqli_或pdo系列方法找不到,這很可能是因?yàn)槟銢]有指定擴(kuò)展庫所在目錄。找到extension_dir 參數(shù),指定擴(kuò)展所在目錄即可

extension_dir = "D:/wamp/bin/php/php5.5.12/ext/"

配置文件

首先我們將連接數(shù)據(jù)庫需要的配置文件,單獨(dú)出來,這樣就不需要每次都去寫,需要的時(shí)候,直接include或者require包含進(jìn)來就可以了。如果關(guān)于include與require不清楚的,可以查考http://blog.csdn.net/hsd2012/article/details/51089785

文件名conf.php

  • return?array(??
  • ????????'host'=>'127.0.0.1',??
  • ????????'user'=>'root',??
  • ????????'password'=>'',//因?yàn)闇y試,我就不設(shè)置密碼,實(shí)際開發(fā)中,必須建立新的用戶并設(shè)置密碼??
  • ????????'dbName'=>'xxpt',??
  • ????????'charSet'=>'utf8',??
  • ????????????'port'=>'3306'??
  • );

    ?

    ?

    通過mysqli擴(kuò)展連接

    mysqli有兩種方式去連接mysql,且支持預(yù)處理,一種是面向?qū)ο?#xff0c;一種是面向過程。

    1.面向過程連接mysql

  • $dbConf=include?'conf.php';??
  • function?openDb($dbConf){??
  • ????$conn=mysqli_connect($dbConf['host'],$dbConf['user'],$dbConf['password'],$dbConf['dbName'],$dbConf['port'])?or?die('打開失敗');??
  • ????//當(dāng)然如上面不填寫數(shù)據(jù)庫也可通過mysqli_select($conn,$dbConf['dbName'])來選擇數(shù)據(jù)庫??
  • ????mysqli_set_charset($conn,$dbConf['charSet']);//設(shè)置編碼??
  • ????return?$conn;??
  • }??
  • function?closeDb($conn){??
  • ????mysqli_close($conn);??
  • }??
  • ??
  • //1.打開連接??
  • $conn=openDb($dbConf);??
  • //2query方法執(zhí)行增、查、刪、改??
  • $sql='SELECT?t.`id1`?from?`t1`?as?t';??
  • /*************數(shù)據(jù)查詢***************************/??
  • $rs=$conn->query($sql);??
  • //從結(jié)果集中讀取數(shù)據(jù)??
  • //fetch_assoc:返回鍵值對(duì)形式,鍵位字段名、fetch_row:返回鍵值對(duì)形式,鍵值為數(shù)值、fetch_array:返回1和2兩種形式的組合??
  • $data=array();//保存數(shù)據(jù)??
  • while($tmp=mysqli_fetch_assoc($rs)){//每次從結(jié)果集中取出一行數(shù)據(jù)??
  • ????$data[]=$tmp;??
  • }??
  • //對(duì)數(shù)據(jù)進(jìn)行相應(yīng)的操作??
  • print_r($data);//輸出數(shù)據(jù)??
  • ??
  • /*************數(shù)據(jù)插入***************************/??
  • $sql='INSERT?INTO?`t1`(`id1`,`id2`)?VALUES(3,4);';??
  • $rs=$conn->query($sql);??
  • //3.關(guān)閉連接??
  • closeDb($conn);??
  • ?

    2.面向?qū)ο蠓绞竭B接mysql

  • $dbConf=include?'conf.php';??
  • //打開??
  • $conn=new?mysqli($dbConf['host'],$dbConf['user'],$dbConf['password'],$dbConf['dbName'],$dbConf['port']);??
  • if(!$conn){??
  • ????die('數(shù)據(jù)庫打開失敗');??
  • }??
  • //執(zhí)行增刪改查??
  • /*************數(shù)據(jù)查詢***************************/??
  • $sql='SELECT?t.`id1`?from?`t1`?as?t';??
  • $rs=$conn->query($sql);//獲取結(jié)果集??
  • //通過fetch_assoc、fetch_array、fetch_row從結(jié)果集中獲取數(shù)據(jù)??
  • while?($tmp=$rs->fetch_assoc())?{??
  • ????print_r($tmp);??
  • }??
  • /*************數(shù)據(jù)刪除***************************/??
  • $sql='DELETE?FROM?`t1`?WHERE?`id1`=3';??
  • $rs=$conn->query($sql);//獲取結(jié)果集??
  • print_r($rs);$conn->close();??

  • 3.mysqli預(yù)處理

    主要講解mysli對(duì)象編程的預(yù)處理,至于面向過程變成的預(yù)處理使用mysqli_prepare就不在介紹 $dbConf=include?'conf.php'; ?
  • //打開??
  • $conn=new?mysqli($dbConf['host'],$dbConf['user'],$dbConf['password'],$dbConf['dbName'],$dbConf['port']);??
  • if(!$conn){??
  • ????die('數(shù)據(jù)庫打開失敗');??
  • }??
  • //執(zhí)行增刪改查??
  • /*************數(shù)據(jù)查詢***************************/??
  • $sql='SELECT?*?from?`t1`?as?t?WHERE?id2>?';??
  • $stmt=$conn->prepare($sql);??
  • if(!$stmt){??
  • ????die('sql語句有問題');??
  • }??
  • //綁定參數(shù)??
  • $id2=2;??
  • $stmt->bind_param('i',$id2);//不能寫成bind_param('i',2)??
  • //執(zhí)行??
  • $stmt->execute();??
  • //將結(jié)果綁定發(fā)到指定的參數(shù)上??
  • $stmt->bind_result($id1,?$id2);??
  • //獲取結(jié)果??
  • while?($tmp=$stmt->fetch())?{??
  • ????print_r('id1='.$id1.',id2='.$id2);??
  • ????echo?'</br>';??
  • }??
  • //關(guān)閉??
  • $stmt->free_result();//釋放結(jié)果????
  • $stmt->close();//關(guān)閉預(yù)編譯的指令.????
  • $conn->close();//關(guān)閉連接????
  • 預(yù)處理綁定參數(shù)中參數(shù)類型說明如下

    php使用PDO方式連接mysql

  • $dbConf=include?'conf.php';??
  • //打開??
  • $pdo=myPDO::getInstance($dbConf);??
  • /*************數(shù)據(jù)查詢***************************/??
  • $sql='SELECT?t.`id1`?from?`t1`?as?t';??
  • $rs=$pdo->query($sql);??
  • $data=$rs->fetchAll();//取出所有結(jié)果??
  • print_r($data);??
  • /*************數(shù)據(jù)更新***************************/??
  • $sql='UPDATE?t1?SET?t1.`id1`=11?WHERE?t1.`id1`=1';??
  • $rs=$pdo->query($sql);??
  • ??
  • /**?
  • ?*?數(shù)據(jù)庫pdo連接?
  • ?*/??
  • class?myPDO{??????
  • ????private?static?$pdo;??
  • ??????
  • ????private?function?__construct(){??
  • ????????//code??
  • ????}??
  • ????private?function?__clone(){??
  • ????????//code??
  • ????}??
  • ????/**?
  • ?????*?獲取實(shí)例化的PDO,單例模式?
  • ?????*?@return?PDO?
  • ?????*/??
  • ????public?static?function?getInstance($dbConf){??
  • ????????if(!(self::$pdo?instanceof?PDO)){??
  • ????????????$dsn?="mysql:host=".$dbConf['host'].";port=".$dbConf['port'].";dbname=".$dbConf['dbName'].";charset=".$dbConf['charSet'];??
  • ????????????try?{??
  • ????????????????self::$pdo?=?new?PDO($dsn,$dbConf['user'],?$dbConf['password'],?array(PDO::ATTR_PERSISTENT?=>?true,PDO::MYSQL_ATTR_INIT_COMMAND?=>?"SET?NAMES?utf8"));?//保持長連接??
  • ????????????????self::$pdo->setAttribute(PDO::ATTR_ERRMODE,?PDO::ERRMODE_WARNING);??
  • ????????????}?catch?(PDOException?$e)?{??
  • ????????????????print?"Error:".$e->getMessage()."<br/>";??
  • ????????????????die();??
  • ????????????}??
  • ????????}??
  • ????????return?self::$pdo;??
  • ????}??
  • } ?
  • pdo支持預(yù)處理,推薦使用預(yù)處理方式,以防sql注入。

    來源:http://www.cnblogs.com/hellohell/p/5718205.html

    總結(jié)

    以上是生活随笔為你收集整理的php通过Mysqli和PDO连接mysql数据详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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