摘要:二對(duì)象利用的構(gòu)造函數(shù)連接特定的數(shù)據(jù)庫(kù),創(chuàng)建一個(gè)對(duì)象。連接數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)有三種方式通過(guò)參數(shù)形式連接推薦構(gòu)造函數(shù)還有一個(gè)參數(shù),它是一個(gè)數(shù)組,用于配置運(yùn)行中的數(shù)據(jù)庫(kù),如是否開(kāi)啟自動(dòng)提交設(shè)置結(jié)果集的返回方式等。
一、PDO簡(jiǎn)介
PDO是PHP Data Object的簡(jiǎn)稱,用于定義數(shù)據(jù)庫(kù)訪問(wèn)的抽象層,統(tǒng)一各種數(shù)據(jù)庫(kù)的訪問(wèn)接口。PDO有如下特性:
編碼一致性:PDO支持多種數(shù)據(jù)庫(kù)擴(kuò)展,并為其提供統(tǒng)一的訪問(wèn)接口 靈活性:PDO提供了統(tǒng)一的SQL操作方法和屬性 高效性:PDO是用C編寫(xiě)、PHP編譯的 面向?qū)ο螅篜DO完全采納面向?qū)ο蟮乃枷?
PDO支持的數(shù)據(jù)庫(kù):
但是,需要注意的是,PDO只是提供了一組數(shù)據(jù)庫(kù)訪問(wèn)接口,利用PDO本身不能操作任何數(shù)據(jù)庫(kù)。
二、PDO對(duì)象利用PDO的構(gòu)造函數(shù)連接特定的數(shù)據(jù)庫(kù),創(chuàng)建一個(gè)PDO對(duì)象。在利用PDO之前,需要開(kāi)啟PDO擴(kuò)展。以PHP+MySQL為例,
開(kāi)啟PHP對(duì)PDO的擴(kuò)展:在php.ini中去掉extension=php_pdo.dll的注釋。
開(kāi)啟MySQL對(duì)PDO的擴(kuò)展:在my.ini中去掉extension=php_pdo_mysql.dll的注釋。
利用phpinfo()可以查看是否開(kāi)啟PDO擴(kuò)展。
1、連接數(shù)據(jù)庫(kù)PDO連接數(shù)據(jù)庫(kù)有三種方式:
1.1 通過(guò)參數(shù)形式連接(推薦)$dsn = "mysql:host=localhost;dbname=xxx"; $username = "xxxxx"; $pwd = "xxxx"; $pdo = new PDO($dsn,$username,$pwd);
PDO構(gòu)造函數(shù)還有一個(gè)$options參數(shù),它是一個(gè)數(shù)組,用于配置運(yùn)行中的數(shù)據(jù)庫(kù),如是否開(kāi)啟自動(dòng)提交、設(shè)置結(jié)果集的返回方式等。
1.2 通過(guò)uri連接首先建立一個(gè)文件,保存數(shù)據(jù)源,文件內(nèi)容形如:mysql:host=localhost;dbname=xxx。然后在程序中引入該文件。
$dsn = "uri:file://保存數(shù)據(jù)源配置的文件路徑"; $username = "xxxxx"; $pwd = "xxxx"; $pdo = new PDO($dsn,$username,$pwd);1.3 通過(guò)配置文件連接
在php.ini中的任意一個(gè)位置添加數(shù)據(jù)源的配置:
pdo.dsn.test=”mysql:host=localhost;dbname=xxxx”;
test是自定義的數(shù)據(jù)源名稱。為方便,可以在php.ini的首行中添加,然后重啟服務(wù)器,在程序中引入該數(shù)據(jù)源
$dsn = "test"; //數(shù)據(jù)源名稱 $username = "xxxxx"; $pwd = "xxxx"; $pdo = new PDO($dsn,$username,$pwd);2、PDO對(duì)象的常見(jiàn)方法和屬性
方法或?qū)傩? 描述
exec() 執(zhí)行一條SQL語(yǔ)句,返回受影響的行數(shù)。用于增刪改,對(duì)查詢返回0
query() 執(zhí)行一條SQL語(yǔ)句,返回PDOStatement對(duì)象,用于保存結(jié)果集
prepare() 執(zhí)行一條SQL語(yǔ)句,返回PDOStatement對(duì)象
quote() 返回一個(gè)添加引號(hào)的字符串,用于SQL語(yǔ)句,可防止SQL注入
lastInsertId 返回最后插入的ID
setAttribute() 設(shè)置數(shù)據(jù)庫(kù)連接屬性
getAttribute() 獲取數(shù)據(jù)庫(kù)連接屬性
errorCode() 獲取跟數(shù)據(jù)庫(kù)句柄上一次操作相關(guān)的SQLSTATE
errorInfo() 獲取跟數(shù)據(jù)庫(kù)句柄上一次操作相關(guān)的錯(cuò)誤信息
beginTransaction() 開(kāi)啟一個(gè)事務(wù)。需要先關(guān)閉自動(dòng)提交
commit() 提交事務(wù)
rollBack() 回滾事務(wù)
inTransaction() 檢查操作是否在事務(wù)內(nèi)
PDO對(duì)象的query()和prepare()方法均會(huì)返回一個(gè)PDOStatement對(duì)象,該對(duì)象可以用于PDO的預(yù)處理執(zhí)行。其常見(jiàn)方法如下:
方法 描述
execute() 執(zhí)行一條預(yù)處理語(yǔ)句
rowCount() 返回上一個(gè)SQL語(yǔ)句影響的行數(shù)
fetch() 從結(jié)果集中獲取一行
fetchAll() 返回一個(gè)包含結(jié)果中所有行的數(shù)組
setFetchMode() 設(shè)置默認(rèn)獲取結(jié)果集的模式
fetchObject() 獲取結(jié)果集下一行并作為對(duì)象返回
fetchColumn() 獲取結(jié)果集下一行的多帶帶一列
bindParam() 綁定一個(gè)參數(shù)到指定的變量名
bindValue() 將某個(gè)值綁定到指定的參數(shù)
bindColumn() 綁定一列到PHP變量
getColumnMeta() 返回結(jié)果集中一列的元素?fù)?jù)
columnCount() 返回結(jié)果中的列數(shù)
setAttribute() 設(shè)置一個(gè)語(yǔ)句屬性
getAttribute() 獲取一個(gè)語(yǔ)句屬性
errorCode() 獲取跟數(shù)據(jù)庫(kù)句柄上一次操作相關(guān)的SQLSTATE
errorInfo() 獲取跟數(shù)據(jù)庫(kù)句柄上一次操作相關(guān)的錯(cuò)誤信息
debugDumpparams() 打印一條SQL預(yù)處理語(yǔ)句
nextRowset() 在一個(gè)多行集語(yǔ)句句柄中推進(jìn)到下一個(gè)行集
PDO支持三種異常模式:
默認(rèn)模式:PDO::ERRMODE_CLIENT 警告模式:PDO::ERRMODE_WARNING 異常模式:PDO::ERRMODE_EXCEPTION(推薦)
可以在PDO的構(gòu)造函數(shù)的第四個(gè)$options參數(shù)或用PDO對(duì)象的setAttribute()方法設(shè)置。
原文:http://www.ido321.com/1424.html
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/30215.html
說(shuō)明:本篇主要學(xué)習(xí)數(shù)據(jù)庫(kù)連接階段和編譯SQL語(yǔ)句部分相關(guān)源碼。實(shí)際上,上篇已經(jīng)聊到Query Builder通過(guò)連接工廠類ConnectionFactory構(gòu)造出了MySqlConnection實(shí)例(假設(shè)驅(qū)動(dòng)driver是mysql),在該MySqlConnection中主要有三件利器:IlluminateDatabaseMysqlConnector;IlluminateDatabaseQuery...
摘要:,看下源碼返回很容易知道返回值是,然后將該值存儲(chǔ)在變量中,這時(shí)??聪碌脑创a去除掉字符后為返回從源碼中可知道返回值為,這時(shí)。 說(shuō)明:本文主要學(xué)習(xí)下Query Builder編譯Fluent Api為SQL的細(xì)節(jié)和執(zhí)行SQL的過(guò)程。實(shí)際上,上一篇聊到了IlluminateDatabaseQueryBuilder這個(gè)非常重要的類,這個(gè)類含有三個(gè)主要的武器:MySqlConnection, M...
摘要:說(shuō)明本文主要學(xué)習(xí)模塊的源碼。這里,就已經(jīng)得到了鏈接器實(shí)例了,該中還裝著一個(gè),下文在其使用時(shí)再聊下其具體連接邏輯。 說(shuō)明:本文主要學(xué)習(xí)Laravel Database模塊的Query Builder源碼。實(shí)際上,Laravel通過(guò)Schema Builder來(lái)設(shè)計(jì)數(shù)據(jù)庫(kù),通過(guò)Query Builder來(lái)CURD數(shù)據(jù)庫(kù)。Query Builder并不復(fù)雜或神秘,只是在PDO擴(kuò)展的基礎(chǔ)上又開(kāi)...
摘要:前置條件編譯的目錄參數(shù)如下上有服務(wù)方便原則,可用來(lái)創(chuàng)建測(cè)試先安裝啟動(dòng)拉取鏡像啟動(dòng)鏡像連接信息創(chuàng)建用戶提供服務(wù)的主機(jī)上得裝有的客戶端官網(wǎng)可獲取地址安裝拓展裝裝添加到配置中添加環(huán)境變量重啟顯示 前置條件 php7,編譯的目錄參數(shù)如下 ./configure --prefix=/opt/php7 --with-config-file-scan-dir=/opt/php7/etc/php.d...
閱讀 2914·2021-10-09 09:44
閱讀 3613·2019-08-30 15:54
閱讀 2223·2019-08-30 14:16
閱讀 2849·2019-08-30 13:09
閱讀 880·2019-08-30 13:08
閱讀 1356·2019-08-29 16:29
閱讀 1773·2019-08-26 13:57
閱讀 1981·2019-08-26 13:53