在剛剛接觸PHP時(shí),曾遇到過這樣一個(gè)坑,就是在PHP7.0版本中無法使用mysql連接數(shù)據(jù)庫(kù),當(dāng)時(shí)只好降級(jí)PHP版本來通過mysql來連接數(shù)據(jù)庫(kù)(很無奈的做法),但作為一個(gè)與時(shí)俱進(jìn)的程序員,必須學(xué)習(xí)新的技術(shù)才能保持競(jìng)爭(zhēng)力,所以今天就介紹一下利用PDO_mysql連接MySQL,這也是PHP新版本推薦使用的一個(gè)擴(kuò)展。
PDO_mysql操作
- 在php.ini中開啟PDO_mysql擴(kuò)展
//取消注釋
extension=php_pdo_mysql.dll
- 實(shí)例化PDO對(duì)象
構(gòu)造方法中有4個(gè)參數(shù):
$dsn:Data Source Name 數(shù)據(jù)源名稱,需要的數(shù)據(jù)來源的描述
$username:數(shù)據(jù)庫(kù)用戶名
$password:數(shù)據(jù)庫(kù)密碼
$driver_options:驅(qū)動(dòng)選項(xiàng),對(duì)應(yīng)當(dāng)前數(shù)據(jù)庫(kù)服務(wù)器中一些特定的初始化工作。
//說明數(shù)據(jù)庫(kù)類型,地址,端口,數(shù)據(jù)庫(kù)名
$dsn = 'mysql:host=127.0.0.1;port=3306;dbname=php';
$username = 'root';
$password = 'admin';
$driver_options = array(PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES UTF8',);
$pdo = new PDO($dsn,$username,$password,$driver_options);
- 發(fā)送SQL到服務(wù)器,等待返回結(jié)果
PDO初始化完成就以為這已經(jīng)連接到數(shù)據(jù)庫(kù),接下來要做的就是通過SQL進(jìn)行數(shù)據(jù)庫(kù)操作。
$sql = "show databases";
$result = $pdo->query($sql);
- 得到結(jié)果,處理結(jié)果
返回的結(jié)果被PDOStatement
類對(duì)象管理,返回的結(jié)果會(huì)自動(dòng)封裝為該對(duì)象,這里我們使用這個(gè)對(duì)象中fetchAll()
方法來展示查詢到的所有結(jié)果,默認(rèn)返回關(guān)聯(lián)性索引集合,如果需要返回?cái)?shù)值型索引,傳入PDO::FETCH_NUM
$list = $result->fetchAll(PDO::FETCH_NUM);
PDO對(duì)象中的常用方法
1.errorInfo()
和errorCode()
:獲取錯(cuò)誤信息。
if(!$result = $pdo->query("show databases")){
//錯(cuò)誤信息
var_dump($pdo->errorInfo());
//錯(cuò)誤代碼
var_dump($pdo->errorCode());
}
2.beginTransaction()
:開始事務(wù)
3.rollback()
:回滾事務(wù)
4.commit()
:提交事務(wù)
5.inTransaction()
:判斷是否處于事務(wù)中
6.lastInsertID()
: 獲取最后形成的auto_increment字段的值
7.Exec()
:又一個(gè)執(zhí)行SQL的方法,區(qū)別于query(),返回值類型不同。Exec()返回值類型為整型(表示當(dāng)前所執(zhí)行SQL所影響的記錄數(shù),用于非查詢類),query()返回對(duì)象(用于執(zhí)行查詢類)