




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第一章PHP操作數(shù)據(jù)庫讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PHP訪問數(shù)據(jù)庫步驟mysql擴(kuò)展mysqli擴(kuò)展PDO擴(kuò)展?學(xué)習(xí)目標(biāo)讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效掌握PHP訪問數(shù)據(jù)庫的基本步驟,可對訪問MySQL數(shù)據(jù)庫進(jìn)行描述14掌握PDO擴(kuò)展,學(xué)會使用PDO的統(tǒng)一接口對不同數(shù)據(jù)庫進(jìn)行操作3熟悉mysqli擴(kuò)展,能夠使用面向?qū)ο笳Z法的方式操作MySQL數(shù)據(jù)庫2掌握mysql擴(kuò)展,會使用PHP對MySQL數(shù)據(jù)庫進(jìn)行增、刪、改、查操作掌握掌握掌握熟悉目錄讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效1.2mysql擴(kuò)展的使用1.4PDO擴(kuò)展的使用1.1PHP訪問MySQL?點(diǎn)擊查看本小節(jié)知識架構(gòu)1.3mysqli擴(kuò)展的使用?點(diǎn)擊查看本小節(jié)知識架構(gòu)?點(diǎn)擊查看本小節(jié)知識架構(gòu)?點(diǎn)擊查看本小節(jié)知識架構(gòu)1.1PHP訪問MySQL1.1.11.1.2PHP訪問MySQL的基本步驟相關(guān)擴(kuò)展介紹返回目錄知識架構(gòu)讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效1.2mysql擴(kuò)展的使用1.2.11.2.21.2.3連接MySQL服務(wù)器選擇數(shù)據(jù)庫執(zhí)行SQL語句返回目錄知識架構(gòu)讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效1.2.4處理結(jié)果集1.2.5釋放資源與關(guān)閉連接1.3mysqli擴(kuò)展的使用1.3.11.3.2mysqli連接并選擇數(shù)據(jù)庫mysqli操作數(shù)據(jù)庫返回目錄知識架構(gòu)讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效1.4PDO擴(kuò)展的使用1.4.11.4.21.4.3什么是PDOPDO連接數(shù)據(jù)庫PDO執(zhí)行SQL語句返回目錄知識架構(gòu)讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效1.4.4PDO處理結(jié)果集1.4.5PDO錯誤處理機(jī)制PHP如何訪問MySQL
數(shù)據(jù)庫?讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效1.1
PHP訪問MySQL
首先,看一下在MySQL客戶端操作數(shù)據(jù)庫的步驟連接MySQL服務(wù)器選擇數(shù)據(jù)庫執(zhí)行SQL語句mysql-hlocalhost-uroot-puse數(shù)據(jù)庫名稱select、insert、update、delete讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效1.1
PHP訪問MySQL讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PHP訪問MySQL數(shù)據(jù)庫服務(wù)器的基本步驟1連接MySQL服務(wù)器——mysql_connect()2選擇數(shù)據(jù)庫——mysql_select_db()3執(zhí)行SQL語句——mysql_query()4處理結(jié)果集——mysql_fetch_array()等5釋放資源與關(guān)閉連接——mysql_free_result()和mysql_close()1.1
PHP訪問MySQL
讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效相關(guān)擴(kuò)展介紹PHP中提供了操作不同數(shù)據(jù)庫的擴(kuò)展,這里只介紹其中常用的三種擴(kuò)展:mysql擴(kuò)展、mysqli擴(kuò)展以及PDO擴(kuò)展。mysql擴(kuò)展mysqli擴(kuò)展PDO擴(kuò)展1.1
PHP訪問MySQL讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效在默認(rèn)情況下,mysql擴(kuò)展已經(jīng)安裝好了,但沒有開啟。開啟mysql擴(kuò)展重啟Apache服務(wù)器查看是否開啟成功;extension=php_mysql.dll打開PHP配置文件php.ini<?phpphpinfo();1.1
PHP訪問MySQL讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效mysqli擴(kuò)展是mysql的增強(qiáng)版擴(kuò)展,它是MySQL4.1及以上版本提供的功能。默認(rèn)情況下已經(jīng)安裝好了,但未開啟。開啟mysqli擴(kuò)展重啟Apache服務(wù)器查看是否開啟成功;extension=php_mysqli.dll打開PHP配置文件php.ini<?phpphpinfo();1.1
PHP訪問MySQL讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效為解決不同數(shù)據(jù)庫擴(kuò)展不兼容的問題,PHP開發(fā)人員編寫了一種輕型、便利的API,即數(shù)據(jù)庫抽象層——PDO擴(kuò)展。開啟PDO擴(kuò)展重啟Apache服務(wù)器查看是否開啟成功;extension=php_pdo_mysql.dll打開PHP配置文件php.ini<?phpphpinfo();1.1
PHP訪問MySQLresourcemysql_connect([string$server[,string$username[,string$password[,bool$new_link[,int$client_flags]]]]])1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效連接MySQL服務(wù)器在操作MySQL數(shù)據(jù)庫之前,需要先與MySQL數(shù)據(jù)庫服務(wù)器建立連接。在PHP的mysql擴(kuò)展中通常使用mysql_connect()函數(shù)與其建立連接。其聲明方式如下:$server參數(shù)默認(rèn)值是“l(fā)ocalhost:3306”,其中l(wèi)ocalhost表示本地服務(wù)器,3306表示默認(rèn)端口號(可以省略)。$username參數(shù)表示登陸MySQL服務(wù)器的用戶名。$password參數(shù)表示MySQL服務(wù)器的用戶密碼。$new_link參數(shù)該函數(shù)每次被調(diào)時時總是打開新的連接。$client_flags參數(shù)值是MySQL客戶端常量,在實(shí)際使用中較少,具體參考PHP手冊。1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效在操作MySQL數(shù)據(jù)庫之前,需要先與MySQL數(shù)據(jù)庫服務(wù)器建立連接。在PHP的mysql擴(kuò)展中通常使用mysql_connect()函數(shù)與其建立連接。連接MySQL服務(wù)器為了讓讀者更好地掌握mysql_connect()函數(shù)的用法,接下來通過一個案例來演示如何進(jìn)行數(shù)據(jù)庫的連接。[點(diǎn)擊查看例1-1]1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效在操作MySQL數(shù)據(jù)庫之前,需要先與MySQL數(shù)據(jù)庫服務(wù)器建立連接。在PHP的mysql擴(kuò)展中通常使用mysql_connect()函數(shù)與其建立連接。在連接數(shù)據(jù)庫發(fā)生錯誤時,會出現(xiàn)錯誤信息,但在上線項目中建議對錯誤信息進(jìn)行屏蔽,并可以自定義錯誤提示,通常有如下兩種方式:$link=@mysql_connect('localhost:3306',‘rot','123456');$link=mysql_connect('localhost:3306','root','123456')ordie('數(shù)據(jù)庫服務(wù)器連接失敗!');建議在程序開發(fā)階段不要屏蔽錯誤信息,避免出錯后難以找到問題。連接MySQL服務(wù)器1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效選擇數(shù)據(jù)庫連接MySQL數(shù)據(jù)庫成功之后,接下來使用mysql_select_db()函數(shù)選擇數(shù)據(jù)庫。其聲明方式如下:boolmysql_select_db(string$database_name[,resource$link_identifier])第一個參數(shù)要選擇的數(shù)據(jù)庫名稱第二個參數(shù)表示MySQL連接,默認(rèn)使用最近打開的連接;如果沒有找到該連接,則嘗試不帶參數(shù)調(diào)用mysql_connect()來創(chuàng)建;如果沒有找到并無法建立該連接,則會生成E_WARNING級別的錯誤。1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效選擇數(shù)據(jù)庫連接MySQL數(shù)據(jù)庫成功之后,接下來使用mysql_select_db()函數(shù)選擇數(shù)據(jù)庫。接下來通過一個案例來演示如何使用此函數(shù)選擇數(shù)據(jù)庫。[點(diǎn)擊查看例1-2]1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效執(zhí)行SQL語句完成數(shù)據(jù)庫的選擇后,就是對SQL語句的執(zhí)行操作了,在PHP中,通常使用mysql_query()函數(shù)執(zhí)行SQL語句。其聲明方式如下:resourcemysql_query(string$query[,resource$link_identifier=NULL])$query表示SQL查詢語句,但是查詢字符串不應(yīng)以“;”結(jié)束。$link_idenifier是可選項,表示MySQL連接標(biāo)識若省略,則使用最近打開的連接。1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效執(zhí)行SQL語句完成數(shù)據(jù)庫的選擇后,就是對SQL語句的執(zhí)行操作了,在PHP中,通常使用mysql_query()函數(shù)執(zhí)行SQL語句。該函數(shù)僅對SELECT、SHOW、EXPLAIN或DESCRIBE語句,執(zhí)行成功返回一個資源標(biāo)識符,失敗返回FALSE。如果SQL語句是INSERT、DELETE、UPDATE等操作指令,成功則返回TRUE,否則返回FALSE。選擇數(shù)據(jù)庫的操作也可使用mysql_query(‘use數(shù)據(jù)庫名稱’)函數(shù)。1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效執(zhí)行SQL語句完成數(shù)據(jù)庫的選擇后,就是對SQL語句的執(zhí)行操作了,在PHP中,通常使用mysql_query()函數(shù)執(zhí)行SQL語句。接下來通過一個案例來演示如何使用此函數(shù)執(zhí)行SQL語句。[點(diǎn)擊查看例1-3]1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效處理結(jié)果集執(zhí)行完SQL語句后,需要使用函數(shù)從結(jié)果集中獲取信息,在PHP中常用的處理結(jié)果集的函數(shù)有mysql_fetch_row()函數(shù)、mysql_fetch_assoc()函數(shù)、mysql_fetch_array()函數(shù)以及mysql_fetch_object()函數(shù)。接下來將針對這些函數(shù)進(jìn)行詳細(xì)地講解。1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效處理結(jié)果集mysql_fetch_row()函數(shù)arraymysql_fetch_row(resource$result)其聲明方式如下:接下來通過從itcast數(shù)據(jù)庫中獲取圖書列表來演示如何使用該函數(shù)獲取結(jié)果集。返回值是數(shù)組類型。參數(shù)$result表示資源型結(jié)果集。每執(zhí)行一次該函數(shù)都將從結(jié)果集資源中取出一條記錄放入到一維數(shù)組中,下標(biāo)從0開始,并且內(nèi)部數(shù)據(jù)指針自動指向下一條數(shù)據(jù),直到?jīng)]有更多行時返回FALSE。[點(diǎn)擊查看例1-4]1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效處理結(jié)果集mysql_fetch_assoc()函數(shù)arraymysql_fetch_assoc(resource$result)其聲明方式如下:接下來使用此函數(shù)來獲取結(jié)果集實(shí)現(xiàn)例1-4的功能。與mysql_fetch_row()函數(shù)唯一的區(qū)別是通過字段名稱的方式獲取數(shù)據(jù)。[點(diǎn)擊查看例1-5]1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效由于mysql擴(kuò)展自PHP5.5.0起已廢棄,并在將來會被移除。可使用以下PDO_MySQL和MySQLi擴(kuò)展中的函數(shù)來代替:PDOStatement::fetch(PDO::FETCH_ASSOC)mysqli_fetch_assoc()處理結(jié)果集mysql_fetch_assoc()函數(shù)1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效處理結(jié)果集mysql_fetch_array()函數(shù)arraymysql_fetch_array(resource$result[,int$result_type])其聲明方式如下:接下來通過一個簡單的案例來演示mysql_fetch_array()函數(shù)的用法。$result是資源類型的參數(shù),傳入的是由mysql_query()函數(shù)返回的數(shù)據(jù)指針。$result_type是可選的常量,其值可以是以下幾種形式:MYSQL_BOTH(默認(rèn)參數(shù)),可同時得到關(guān)聯(lián)索引和數(shù)字索引。MYSQL_ASSOC,只得到關(guān)聯(lián)索引,形如mysql_fetch_assoc()函數(shù)。MYSQL_NUM,只得到數(shù)字索引,形如mysql_fetch_row()。[點(diǎn)擊查看例1-6]1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效處理結(jié)果集mysql_fetch_array()函數(shù)mysql_fetch_array()函數(shù)返回的字段名區(qū)分大小寫。在獲取結(jié)果集時比用mysql_fetch_row()慢,而且還提供了明顯更多的值。如果結(jié)果中的兩個或以上的列具有相同的字段名,最后一列優(yōu)先級最高,要訪問其他列,必須用該列的數(shù)字索引或給該列起別名。1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效處理結(jié)果集mysql_fetch_object()函數(shù)objectmysql_fetch_object(resource$result)其聲明方式如下:為了讓讀者更好的理解mysql_fetch_object()函數(shù),將例1-6中獲取結(jié)果集的方式換成此函數(shù),具體如例1-7所示。由于該函數(shù)的返回值類型是object類型,所以只能通過字段名來訪問數(shù)據(jù),并且此函數(shù)返回的字段名大小寫敏感。參數(shù)$result是調(diào)用mysql_query()函數(shù)返回的結(jié)果集。[點(diǎn)擊查看例1-7]1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效處理結(jié)果集多學(xué)一招mixedmysql_result(resource$result,int$row[,mixed$field])函數(shù)mysql_result()可從結(jié)果集中獲取一個單元的內(nèi)容,其聲明方式如下所示:$row參數(shù)表示字段的偏移量。$field是可選參數(shù),表示字段名。mysql_result()函數(shù)不能和其他處理結(jié)果集的函數(shù)混合調(diào)用。[點(diǎn)擊查看例1-8]1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效處理結(jié)果集其他經(jīng)常用到的函數(shù)
12
3intmysql_num_rows(resource$result)執(zhí)行SELECT查詢語句時,使用此函數(shù)可以返回查詢的記錄數(shù)。僅對SELECT查詢語句有效。intmysql_affected_rows([resource$link_identifier=NULL])獲取執(zhí)行INSERT,UPDATE
或者DELETE語句執(zhí)行后受影響的行數(shù)。若最近一次查詢失敗的話則返回-1可由mysqli_affected_rows()函數(shù)和PDOStatement::rowCount()方法來代替。intmysql_insert_id([resource$link_identifier])獲取得上一次插入操作時產(chǎn)生的ID號。如果上一查詢沒有產(chǎn)生AUTO_INCREMENT的ID值,則該函數(shù)的返回值為0。1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效釋放資源與關(guān)閉連接處理完結(jié)果集后,若考慮到返回很大的結(jié)果集會占用多少內(nèi)存時需調(diào)用mysql_free_result()函數(shù)以釋放系統(tǒng)資源。其聲明方式如下:boolmysql_free_result(resource$result)函數(shù)的返回值類型是布爾類型,執(zhí)行成功返回TRUE,執(zhí)行失敗返回FALSE。接下來,通過一個案例來演示此函數(shù)的用法。[點(diǎn)擊查看例1-9]1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效釋放資源與關(guān)閉連接當(dāng)一次性返回的結(jié)果集比較大,或網(wǎng)站訪問量比較多時,最好用mysql_close()函數(shù)手動進(jìn)行釋放。其聲明方式如下:boolmysql_close([resource$link_identifier=NULL])函數(shù)的返回值類型是布爾類型,執(zhí)行成功返回TRUE,執(zhí)行失敗返回FALSE。接下來,通過一個案例來演示mysql_close()函數(shù)的使用。[點(diǎn)擊查看例1-10]表示要關(guān)閉的MySQL連接資源。如果沒有指定$link_identifer,則關(guān)閉上一個打開的連接。1.2
mysql擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效釋放資源與關(guān)閉連接通常不需要使用mysql_close(),因為已打開的非持久連接會在腳本執(zhí)行完畢后自動關(guān)閉。且自PHP5.5.0起該函數(shù)已廢棄,并在將來會被移除,本函數(shù)可在PDO中為PDO對象設(shè)置一個NULL值或由mysqli_close()函數(shù)來代替。1.2
mysql擴(kuò)展的使用動動手—完成企業(yè)門戶網(wǎng)站首頁效果圖1.2
mysql擴(kuò)展的使用動動手—完成企業(yè)門戶網(wǎng)站新聞詳細(xì)頁效果圖1.3
mysqli擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效mysqli連接并選擇數(shù)據(jù)庫[點(diǎn)擊播放視頻]在面向?qū)ο蟮哪J街校琺ysqi是一個封裝好的類,使用前需要先實(shí)例化對象,同時傳遞數(shù)據(jù)庫連接參數(shù)。其聲明方式如下:mysqli::__construct([string$host=ini_get("mysqli.default_host")[,string$username=ini_get("mysqli.default_user")[,string$passwd=ini_get("mysqli.default_pw")[,string$dbname=""[,int$port=ini_get("mysqli.default_port")[,string$socket=ini_get("mysqli.default_socket")]]]]]])參數(shù)$host表示主機(jī)名或IP。參數(shù)$username表示用戶名。參數(shù)$passwd表示密碼。參數(shù)$dbname表示表示要操作的數(shù)據(jù)庫。參數(shù)$port表示端口號。參數(shù)$socket表示套接字。1.3
mysqli擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效mysqli連接并選擇數(shù)據(jù)庫在面向?qū)ο蟮哪J街校琺ysqi是一個封裝好的類,使用前需要先實(shí)例化對象,同時傳遞數(shù)據(jù)庫連接參數(shù)。接下來,通過一個案例來演示mysqli構(gòu)造方法連接數(shù)據(jù)庫的使用。[點(diǎn)擊查看例1-11]執(zhí)行SQL語句1.3
mysqli擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效mysqli操作數(shù)據(jù)庫[點(diǎn)擊播放視頻]mixedmysqli::query(string$query[,int$resultmode=MYSQLI_STORE_RESULT])表示要執(zhí)行的SQL語句。$resultmode是可選參數(shù)。query()方法返回值情況如下:執(zhí)行失敗時返回FALSE。執(zhí)行SELECT、SHOW、DESCRIBE或EXPLAIN語句成功時返回一個mysqli_result對象。執(zhí)行其他查詢語句成功時返回TRUE。1.3
mysqli擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效mysqli操作數(shù)據(jù)庫1.3
mysqli擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效mysqli操作數(shù)據(jù)庫處理結(jié)果集在mysqli擴(kuò)展中,MySQLi_RESULT類提供了常用處理結(jié)果集的屬性和方法,具體如下:1.3
mysqli擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效mysqli操作數(shù)據(jù)庫處理結(jié)果集mysqli_result->num_rowsmysqli_result->fetch_all()mysqli_result->fetch_array()mysqli_result->fetch_assoc()屬性方法方法方法獲取結(jié)果中行的數(shù)量。獲取所有的結(jié)果并以關(guān)聯(lián)數(shù)據(jù),數(shù)值索引數(shù)組,或兩者皆有的方式返回。獲取一行結(jié)果,并以關(guān)聯(lián)數(shù)組,數(shù)值索引返回。獲取一行結(jié)果并以關(guān)聯(lián)數(shù)組返回。1.3
mysqli擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效mysqli操作數(shù)據(jù)庫mysqli_result->fetch_fields()mysqli_result->fetch_object()mysqli_result->fetch_row()mysqli_result->free(),mysqli_result->close(),mysqli_result->free_result()方法方法方法返回一個代表結(jié)果集字段的對象數(shù)組。以一個對象的方式返回一個結(jié)果集中的當(dāng)前行。以一個枚舉數(shù)組方式返回一行結(jié)果。釋放結(jié)果集。方法處理結(jié)果集1.3
mysqli擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效mysqli操作數(shù)據(jù)庫接下來通過一個案例來演示如何使用MySQLi_RESULT類的屬性和方法,具體如例1-12所示。[點(diǎn)擊查看例1-12]注意:在使用mysqli的面向?qū)ο笳Z法時,一定要使用對象操作符即“->”調(diào)用相關(guān)的屬性或方法。1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效什么是PDO介紹PDO是PHPDataObject即PHP數(shù)據(jù)對象的簡稱,它是與PHP5.1版本一起發(fā)布的,目前支持的數(shù)據(jù)庫包括Firebird、FreeTDS、Interbase、MySQL、MSSQLServer、ODBC、Oracle、PostgreSQL、SQLite和Sybase。當(dāng)操作不同數(shù)據(jù)庫時,只需要修改PDO中的DSN(數(shù)據(jù)庫源),即可使用PDO的統(tǒng)一接口進(jìn)行操作。1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO連接數(shù)據(jù)庫[點(diǎn)擊播放視頻]使用PDO擴(kuò)展連接數(shù)據(jù)庫,需要實(shí)例化PDO類,同時傳遞數(shù)據(jù)庫連接參數(shù)。其聲明方式如下:PDO::__construct(string$dsn[,string$username[,string$password[,array$driver_options]]])參數(shù)$dsn用于表示數(shù)據(jù)源名稱,包括PDO驅(qū)動名、主機(jī)名、端口號、數(shù)據(jù)庫名稱。參數(shù)$username表示用戶名。參數(shù)$passwd表示密碼。$driver_options表示一個具體驅(qū)動連接的選項(鍵值對數(shù)組)。該函數(shù)執(zhí)行成功時返回一個PDO對象,失敗時則拋出一個PDO異常(PDOException)。PDO連接數(shù)據(jù)庫1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效在使用PDO連接數(shù)據(jù)庫時,需要了解以下兩點(diǎn):數(shù)據(jù)源中的PDO驅(qū)動名即要連接的數(shù)據(jù)庫服務(wù)器類型,如mysql、oracle等。數(shù)據(jù)源中的端口號和數(shù)據(jù)庫的位置可互換。PDO連接數(shù)據(jù)庫1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效為了讓讀者更好地理解PDO連接數(shù)據(jù)庫的操作,接下來通過一個案例來演示如何使用PDO連接MySQL數(shù)據(jù)庫。[點(diǎn)擊查看例1-13]注意:除了在例1-13中設(shè)置PDO的具體驅(qū)動連接選項設(shè)定字符集,還可以在PDO的DSN中進(jìn)行設(shè)置,具體如下所示:$dsn="$dbms:host=$host;dbname=$dbname;charset=utf8";PHP的版本大于5.3.6時,才可以使用DSN中的charset屬性進(jìn)行設(shè)置字符集。1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO執(zhí)行SQL語句[點(diǎn)擊播放視頻]query()方法PDOStatementPDO::query(string$statement)表示要執(zhí)行的SQL語句。執(zhí)行成功則返回一個PDOStatement類的對象;執(zhí)行失敗則返回FALSE。[點(diǎn)擊查看例1-14]1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO執(zhí)行SQL語句exec()方法intPDO::exec(string$statement)表示要執(zhí)行的SQL語句。用于執(zhí)行一條SQL語句并返回執(zhí)行后受影響的行數(shù)。[點(diǎn)擊查看例1-15]1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO執(zhí)行SQL語句兩者區(qū)別query()方法主要是用于有記錄結(jié)果返回的操作,特別是SELECT操作。exec()主要是針對沒有結(jié)果集合返回的操作,比如INSERT、UPDATE、DELETE等操作。1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO執(zhí)行SQL語句[點(diǎn)擊播放視頻]預(yù)處理語句所謂預(yù)處理語句,用戶可以想象成一種編譯過的待執(zhí)行的SQL語句模板,在執(zhí)行時,只需在服務(wù)器和客戶端之間傳輸有變化的數(shù)據(jù)即可,以此可以避免重復(fù)分析、編譯、優(yōu)化及防止SQL注入等好處。1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO執(zhí)行SQL語句預(yù)處理語句例如,要插入1000條記錄,如果使用exec()方法則需執(zhí)行1000條insert語句,而使用預(yù)處理語句則只要編譯執(zhí)行一條插入語句。1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO執(zhí)行SQL語句準(zhǔn)備預(yù)處理語句參數(shù)綁定執(zhí)行預(yù)處理語句執(zhí)行預(yù)處理語句的過程PDOStatementPDO::prepare(string$statement[,array$driver_options=array()])使用prepare()方法準(zhǔn)備執(zhí)行預(yù)處理語句,該方法將返回一個PDOStatement類對象,其聲明方式如下:PDO支持兩種占位符,即問號占位符(?)和命名參數(shù)占位符(:參數(shù)名稱)。參數(shù)$statement表示預(yù)處理的SQL語句,其中在SQL語句中可以添加占位符,如:和insertinto`member`(id)values(?)insertinto`member`(id)values(:id)1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO執(zhí)行SQL語句準(zhǔn)備預(yù)處理語句執(zhí)行預(yù)處理語句的過程PDOStatementPDO::prepare(string$statement[,array$driver_options=array()])使用prepare()方法準(zhǔn)備執(zhí)行預(yù)處理語句,該方法將返回一個PDOStatement類對象,其聲明方式如下:$driver_options是可選參數(shù),表示設(shè)置一個或多個PDOStatement對象的屬性值。參數(shù)綁定執(zhí)行預(yù)處理語句1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO執(zhí)行SQL語句準(zhǔn)備預(yù)處理語句執(zhí)行預(yù)處理語句的過程boolPDOStatement::bindParam(mixed$parameter,mixed&$variable[,int$data_type=PDO::PARAM_STR[,int$length[,mixed$driver_options]]])使用bindParam()方法將參數(shù)綁定到準(zhǔn)備好的查詢占位符上,其語法格式如下:參數(shù)$parameter用于表示參數(shù)標(biāo)識符。參數(shù)綁定執(zhí)行預(yù)處理語句準(zhǔn)備預(yù)處理語句參數(shù)綁定參數(shù)$variable用于表示參數(shù)標(biāo)識符對應(yīng)的變量名。可選參數(shù)$data_type用于明確參數(shù)類型,其值使用PDO::PARAM_*常量來表示。1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO執(zhí)行SQL語句準(zhǔn)備預(yù)處理語句執(zhí)行預(yù)處理語句的過程參數(shù)綁定執(zhí)行預(yù)處理語句準(zhǔn)備預(yù)處理語句參數(shù)綁定PDO::PARAM_*常量PDO::PARAM_NULLPDO::PARAM_INTPDO::PARAM_STR代表SQL空數(shù)據(jù)類型。代表SQL整數(shù)數(shù)據(jù)類型。代表SQL字符串?dāng)?shù)據(jù)類型。PDO::PARAM_*常量PDO::PARAM_BOOLPDO::PARAM_LOB代表一個布爾值數(shù)據(jù)類型。代表SQL中大對象數(shù)據(jù)類型。1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO執(zhí)行SQL語句準(zhǔn)備預(yù)處理語句執(zhí)行預(yù)處理語句的過程參數(shù)綁定執(zhí)行預(yù)處理語句準(zhǔn)備預(yù)處理語句參數(shù)綁定PDO::PARAM_*常量1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO執(zhí)行SQL語句準(zhǔn)備預(yù)處理語句執(zhí)行預(yù)處理語句的過程boolPDOStatement::bindParam(mixed$parameter,mixed&$variable[,int$data_type=PDO::PARAM_STR[,int$length[,mixed$driver_options]]])使用bindParam()方法將參數(shù)綁定到準(zhǔn)備好的查詢占位符上,其語法格式如下:參數(shù)綁定執(zhí)行預(yù)處理語句準(zhǔn)備預(yù)處理語句參數(shù)綁定該方法執(zhí)行成功時返回TRUE,執(zhí)行失敗則返回FALSE。$length是可選參數(shù)用于表示數(shù)據(jù)類型的長度。參數(shù)綁定1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO執(zhí)行SQL語句執(zhí)行預(yù)處理語句的過程boolPDOStatement::execute([array$input_parameters])使用execute()方法執(zhí)行一條預(yù)處理語句,其語法格式如下:參數(shù)綁定執(zhí)行預(yù)處理語句準(zhǔn)備預(yù)處理語句可選參數(shù)$input_parameters表示一個元素個數(shù)與預(yù)處理語句中被綁定的參數(shù)一樣多的數(shù)組,并且所有的值作為PDO::PARAM_STR對待。執(zhí)行預(yù)處理語句參數(shù)綁定1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO執(zhí)行SQL語句執(zhí)行預(yù)處理語句的過程boolPDOStatement::execute([array$input_parameters])使用execute()方法執(zhí)行一條預(yù)處理語句,其語法格式如下:參數(shù)綁定執(zhí)行預(yù)處理語句準(zhǔn)備預(yù)處理語句不能綁定多個值到一個單獨(dú)的參數(shù),例如,不能綁定兩個值到IN()子句中的一個單獨(dú)的參數(shù)上;并且$input_parameters中的元素個數(shù)要與預(yù)處理的SQL中指定的鍵名個數(shù)一致,否則將會發(fā)生錯誤。執(zhí)行預(yù)處理語句1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO執(zhí)行SQL語句參數(shù)綁定執(zhí)行預(yù)處理語句的過程參數(shù)綁定執(zhí)行預(yù)處理語句準(zhǔn)備預(yù)處理語句執(zhí)行預(yù)處理語句為了讓讀者更好地掌握預(yù)處理語句的使用,接下來通過一個案例來學(xué)習(xí),如例1-16所示。[點(diǎn)擊查看例1-16]注意:問號占位符與參數(shù)占位符在使用時有些不同。接下來通過使用問號占位符來實(shí)現(xiàn)與例1-16一樣的功能,如例1-17所示。[點(diǎn)擊查看例1-17]1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO處理結(jié)果集[點(diǎn)擊播放視頻]執(zhí)行完SQL語句后,就可以對結(jié)果集進(jìn)行處理,在PDO中常用有獲取結(jié)果集的方式有3種:fetch()、fetchColumn()及fetchAll(),下面分別詳細(xì)介紹這三種方式的用法和區(qū)別。1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO處理結(jié)果集fetch()函數(shù)mixedPDOStatement::fetch([int$fetch_style[,int$cursor_orientation=PDO::FETCH_ORI_NEXT[,int$cursor_offset=0]]])其聲明方式如下:$fetch_style參數(shù)用于控制結(jié)果集的返回方式,其值必須是PDO::FETCH_*系列常量中的一個。1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO處理結(jié)果集PDO::FETCH_*常量PDO::FETCH_ASSOCPDO::FETCH_BOUNDPDO::FETCH_BOTH
(默認(rèn))返回一個鍵為結(jié)果集字段名的關(guān)聯(lián)數(shù)組。返回TRUE,并分配結(jié)果集中的列值給bindColumn()方法綁定的PHP變量。返回一個索引為結(jié)果集列名和以0開始的列號的數(shù)組。PDO::FETCH_CLASS返回一個請求類的新實(shí)例,映射結(jié)果集中的列名到類中對應(yīng)的屬性名。1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO處理結(jié)果集PDO::FETCH_*常量PDO::FETCH_INTOPDO::FETCH_NUMPDO::FETCH_LAZY更新一個已存在的實(shí)例,映射結(jié)果集中的列到類中命名的屬性。返回一個索引以0開始的結(jié)果集列號的數(shù)組。返回一個包含關(guān)聯(lián)數(shù)組、數(shù)字索引數(shù)組和對象的結(jié)果。PDO::FETCH_OBJ返回一個屬性名對應(yīng)結(jié)果集列名的匿名對象。$cursor_offset參數(shù)表示游標(biāo)的偏移量。參數(shù)$cursor_orientation是PDOStatement對象的一個滾動游標(biāo),可用于獲取執(zhí)行的一行。1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO處理結(jié)果集fetch()函數(shù)mixedPDOStatement::fetch([int$fetch_style[,int$cursor_orientation=PDO::FETCH_ORI_NEXT[,int$cursor_offset=0]]])其聲明方式如下:接下來通過案例來演示如何使用fetch()方法獲取結(jié)果集中的數(shù)據(jù)。1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO處理結(jié)果集fetch()函數(shù)[點(diǎn)擊查看例1-18]注意:fetchObject()方法是fetch()使用PDO::FETCH_CLASS或PDO::FETCH_OBJ這兩種數(shù)據(jù)返回方式的一種替代。1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO處理結(jié)果集fetchColumn()函數(shù)stringPDOStatement::fetchColumn([int$column_number=0])其聲明方式如下:可選參數(shù)$column_number用于設(shè)置行中列的索引號,該值從0開始。如果省略該參數(shù),則獲取第一列。該方法執(zhí)行成功則返回單獨(dú)的一列,否則返回FALSE。接下來,通過一個案例來演示如何使用fetchColumn()方法獲取一列數(shù)據(jù)。[點(diǎn)擊查看例1-19]需要注意的是,調(diào)用fetchColumn()方法后,則沒有辦法返回同一行的另外一列。1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO處理結(jié)果集fetchAll()函數(shù)arrayPDOStatement::fetchAll([int$fetch_style[,mixed$fetch_argument[,array$ctor_args=array()]]])其聲明方式如下:$fetch_style參數(shù)用于控制結(jié)果集中數(shù)據(jù)的返回方式,默認(rèn)值為PDO::FETCH_BOTH。參數(shù)$fetch_argument根據(jù)$fetch_style參數(shù)的值的變化而有不同的意義,具體如下所示:1.4
PDO擴(kuò)展的使用讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PDO處理結(jié)果集fetch_argument參數(shù)
的意義PDO::FETCH_COLUMNPDO::FETCH_FUNCPDO::FETCH_CLASS返回指定以0開始索引的列
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 產(chǎn)品差異化與供應(yīng)鏈金融創(chuàng)新考核試卷
- 體育會展項目融資工具創(chuàng)新考核試卷
- 電氣系統(tǒng)維護(hù)考核試卷
- 人工智能在罕見內(nèi)分泌疾病診斷中的多模態(tài)數(shù)據(jù)應(yīng)用考核試卷
- 供應(yīng)鏈金融創(chuàng)新服務(wù)考核試卷
- 傳動部件的動態(tài)性能仿真分析考核試卷
- 2025年中國PVC便箋盒數(shù)據(jù)監(jiān)測研究報告
- 2025年中國FR挾口杯數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國面罩市場分析及競爭策略研究報告
- 2025至2030年中國鋁研磨面板材市場分析及競爭策略研究報告
- 2024年隴南市武都區(qū)佛崖鎮(zhèn)招聘專職化村文書筆試真題
- 獵頭職業(yè)技能培訓(xùn)
- 電動公交車充電設(shè)施建設(shè)與運(yùn)營模式
- 和合文化與國際傳播
- 煤礦急救知識培訓(xùn)課件
- 高中語文 小說閱讀理解題及答案
- 匯川技術(shù)的在線測評
- 骨科醫(yī)療糾紛防范和處置
- 2023-2024學(xué)年黑龍江省哈爾濱市道里區(qū)七年級(下)期末數(shù)學(xué)試卷(五四學(xué)制)(含答案)
- 大學(xué)俄語一級課程考試試卷 (A 卷)
- 人教版二年級數(shù)學(xué)上冊學(xué)生作業(yè)(全冊)
評論
0/150
提交評論