生活随笔
收集整理的這篇文章主要介紹了
                                
php通过Mysqli和PDO连接mysql数据详解
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
 
                                
                            
                            
                             
前言
 
 
在實際開發(fā)中,關于數(shù)據(jù)庫操作類,很少是自己去寫,大多是通過一些框架去實現(xiàn),突然自己去寫,還是需要借閱手冊之類,于是我覺得有必要去總結一下,php連接mysql的方法,php連接mysql,可以通過mysql擴展、mysqli擴展,pdo擴展,因為高版本的php將移除mysql_系列方法,故在此只總結另外兩種連接方式。首先我們得確保php的這兩個擴展是否已經(jīng)打開,查看php.ini配置文件如下:
 
 
提示,如有有的人說,我打開了擴展庫(即去掉了,前面的';'),仍然一直提示mysqli_或pdo系列方法找不到,這很可能是因為你沒有指定擴展庫所在目錄。找到extension_dir 參數(shù),指定擴展所在目錄即可
 
extension_dir = "D:/wamp/bin/php/php5.5.12/ext/"
 
配置文件
 
首先我們將連接數(shù)據(jù)庫需要的配置文件,單獨出來,這樣就不需要每次都去寫,需要的時候,直接include或者require包含進來就可以了。如果關于include與require不清楚的,可以查考http://blog.csdn.net/hsd2012/article/details/51089785
 
文件名conf.php
 
 return?array(??????????'host'=>'127.0.0.1',??????????'user'=>'root',??????????'password'=>'',????????'dbName'=>'xxpt',??????????'charSet'=>'utf8',??????????????'port'=>'3306'??  
 ); 
?
 
?
 
通過mysqli擴展連接
 
mysqli有兩種方式去連接mysql,且支持預處理,一種是面向對象,一種是面向過程。
 
1.面向過程連接mysql
 
 $dbConf=include?'conf.php';??function?openDb($dbConf){??????$conn=mysqli_connect($dbConf['host'],$dbConf['user'],$dbConf['password'],$dbConf['dbName'],$dbConf['port'])?or?die('打開失敗');??????????mysqli_set_charset($conn,$dbConf['charSet']);????return?$conn;??}??function?closeDb($conn){??????mysqli_close($conn);??}????$conn=openDb($dbConf);??$sql='SELECT?t.`id1`?from?`t1`?as?t';??$rs=$conn->query($sql);??$data=array();while($tmp=mysqli_fetch_assoc($rs)){????$data[]=$tmp;??}??print_r($data);??$sql='INSERT?INTO?`t1`(`id1`,`id2`)?VALUES(3,4);';??$rs=$conn->query($sql);??closeDb($conn);?? 
 
?
 
2.面向對象方式連接mysql
 
 $dbConf=include?'conf.php';??$conn=new?mysqli($dbConf['host'],$dbConf['user'],$dbConf['password'],$dbConf['dbName'],$dbConf['port']);??if(!$conn){??????die('數(shù)據(jù)庫打開失敗');??}??$sql='SELECT?t.`id1`?from?`t1`?as?t';??$rs=$conn->query($sql);while?($tmp=$rs->fetch_assoc())?{??????print_r($tmp);??}??$sql='DELETE?FROM?`t1`?WHERE?`id1`=3';??$rs=$conn->query($sql);print_r($rs);$conn->close();?? 
 
 
3.mysqli預處理
 
主要講解mysli對象編程的預處理,至于面向過程變成的預處理使用mysqli_prepare就不在介紹
 
$dbConf=include?'conf.php'; ?
 
  $conn=new?mysqli($dbConf['host'],$dbConf['user'],$dbConf['password'],$dbConf['dbName'],$dbConf['port']);??if(!$conn){??????die('數(shù)據(jù)庫打開失敗');??}??$sql='SELECT?*?from?`t1`?as?t?WHERE?id2>?';??$stmt=$conn->prepare($sql);??if(!$stmt){??????die('sql語句有問題');??}??$id2=2;??$stmt->bind_param('i',$id2);$stmt->execute();??$stmt->bind_result($id1,?$id2);??while?($tmp=$stmt->fetch())?{??????print_r('id1='.$id1.',id2='.$id2);??????echo?'</br>';??}??$stmt->free_result();$stmt->close();$conn->close();  預處理綁定參數(shù)中參數(shù)類型說明如下
  php使用PDO方式連接mysql
 
 
 $dbConf=include?'conf.php';??$pdo=myPDO::getInstance($dbConf);??$sql='SELECT?t.`id1`?from?`t1`?as?t';??$rs=$pdo->query($sql);??$data=$rs->fetchAll();print_r($data);??$sql='UPDATE?t1?SET?t1.`id1`=11?WHERE?t1.`id1`=1';??$rs=$pdo->query($sql);????class?myPDO{??????????private?static?$pdo;????????????private?function?__construct(){??????????????}??????private?function?__clone(){??????????????}??????????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支持預處理,推薦使用預處理方式,以防sql注入。
 
來源:http://www.cnblogs.com/hellohell/p/5718205.html
                            總結
                            
                                以上是生活随笔為你收集整理的php通过Mysqli和PDO连接mysql数据详解的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                            
                                如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。