PHP網(wǎng)站開發(fā)PHPPHP操作MySQL數(shù)據(jù)庫_第1頁
PHP網(wǎng)站開發(fā)PHPPHP操作MySQL數(shù)據(jù)庫_第2頁
PHP網(wǎng)站開發(fā)PHPPHP操作MySQL數(shù)據(jù)庫_第3頁
PHP網(wǎng)站開發(fā)PHPPHP操作MySQL數(shù)據(jù)庫_第4頁
PHP網(wǎng)站開發(fā)PHPPHP操作MySQL數(shù)據(jù)庫_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

任務(wù)五163郵箱注冊功能實(shí)現(xiàn)簡單注冊功能實(shí)現(xiàn)使用圖片驗(yàn)證碼(圖片驗(yàn)證碼地創(chuàng)建,插入,刷新與驗(yàn)證過程)操作mysql數(shù)據(jù)庫(創(chuàng)建數(shù)據(jù)庫與數(shù)據(jù)表,數(shù)據(jù)庫地導(dǎo)入與導(dǎo)出,PHP文件訪問MySQL數(shù)據(jù)庫)使用數(shù)據(jù)庫保存注冊信息5.3PHP操作MySQL數(shù)據(jù)庫在PHP訪問數(shù)據(jù)庫時(shí),通常需要完成如下這些操作:連接數(shù)據(jù)庫,打開數(shù)據(jù)庫,設(shè)計(jì)SQL語句,對數(shù)據(jù)表進(jìn)行增刪查改等操作,執(zhí)行設(shè)計(jì)地SQL語句,若是完成地是查詢操作,還需要判斷查詢結(jié)果是否存在,以確定接下來需要做哪些工作,整個數(shù)據(jù)庫操作完成之后需要關(guān)閉數(shù)據(jù)庫。需要掌握地函數(shù)1.連接MyQL數(shù)據(jù)庫地方法mysqli_connect()地應(yīng)用2.選擇打開自己創(chuàng)建數(shù)據(jù)庫地方法mysqli_select_db()地應(yīng)用3.執(zhí)行SQL語句地方法mysqli_query()地應(yīng)用4.獲取查詢結(jié)果記錄集記錄數(shù)地方法mysqli_num_rows()地應(yīng)用5.關(guān)閉數(shù)據(jù)庫地方法mysqli_close()地應(yīng)用5.3.1mysqli_connect()及有關(guān)函數(shù)在PHP程序操作MySQL數(shù)據(jù)庫地?cái)?shù)據(jù),首要操作就是連接到數(shù)據(jù)庫服務(wù)器,也就是建立一條PHP程序到MySQL數(shù)據(jù)庫之間地通道,完成該功能需要使用mysqli_connect()函數(shù)。函數(shù)地返回值該函數(shù)在應(yīng)用之后會返回一個代表到MySQL服務(wù)器地連接地對象。函數(shù)格式:mysqli_connect(host,username,password,dbname,port,socket)mysqli_connect()函數(shù)地參數(shù)六個參數(shù)說明如下:host,可選,規(guī)定數(shù)據(jù)庫服務(wù)器名稱或IP地址;username,可選,規(guī)定MySQL用戶名;password,可選,規(guī)定MySQL密碼;dbname,可選,規(guī)定默認(rèn)使用地?cái)?shù)據(jù)庫;port,可選,規(guī)定嘗試連接到MySQL服務(wù)器地端口號;socket,可選,規(guī)定socket或要使用地已命名pipe。數(shù)據(jù)庫連接后地有關(guān)函數(shù)連接成功可以使用函數(shù)mysqli_get_server_info(connection)獲取MySQL服務(wù)器版本信息可以使用函數(shù)mysqli_get_host_info(connection)返回MySQL服務(wù)器主機(jī)名與連接類型。連接失敗可以使用函數(shù)mysqli_connect_errno()獲取錯誤編號可以使用函數(shù)mysqli_connect_error()獲取錯誤信息。示例5-1創(chuàng)建mysql.php文件,編寫代碼連接MySQL數(shù)據(jù)庫,同時(shí)打開phpStudyMySQL系統(tǒng)自帶地?cái)?shù)據(jù)庫"mysql",若是操作成功則輸出"數(shù)據(jù)庫連接成功",同時(shí)輸出服務(wù)器主機(jī)名稱與連接類型以及MySQL服務(wù)器版本信息,否則輸出"數(shù)據(jù)庫連接失敗,錯誤編號是:xxx,錯誤信息是:xxx"。代碼如下die()函數(shù)有兩個功能:先輸出內(nèi)容,然后退出程序。(常用在連接服務(wù)器與數(shù)據(jù)庫上)服務(wù)器連接成功問題說明-1若是將第一個參數(shù)localhost改成錯誤地寫法,例如改為"localhst",運(yùn)行效果如圖所示。問題說明-2若是將用戶名參數(shù)root改成錯誤地寫法,例如改為"rot",運(yùn)行效果如圖所示。問題說明-3若是將第三個參數(shù)密碼root改成錯誤地密碼,例如改為rot,運(yùn)行效果如圖所示。問題說明-4若是將第四個參數(shù)數(shù)據(jù)庫名稱改成不存在地庫名,例如改成test,則會提示"不知道地?cái)?shù)據(jù)庫test",運(yùn)行效果如圖所示。5.3.2mysqli_select_db()函數(shù)該函數(shù)地功能可以理解為兩種形式:選擇打開指定地?cái)?shù)據(jù)庫與更改已經(jīng)選擇地?cái)?shù)據(jù)庫。在建立MySQL數(shù)據(jù)庫連接時(shí),若是mysqli_connect()函數(shù)沒有指定要訪問地?cái)?shù)據(jù)庫名稱,在連接成功之后,需要使用函數(shù)mysqli_select_db()選擇并打開要操作地?cái)?shù)據(jù)庫,之后才能對這個庫地?cái)?shù)據(jù)表進(jìn)行增刪查改等各種操作;若是在建立MySQL連接時(shí)指定了要訪問地?cái)?shù)據(jù)庫,則可以使用函數(shù)mysqli_select_db()更改所指定地?cái)?shù)據(jù)庫。mysqli_select_db()函數(shù)該函數(shù)需要使用兩個參數(shù),格式如下:mysqli_select_db(connection,dbname)。參數(shù)說明:參數(shù)connection,必需,規(guī)定要使用地MySQL連接;參數(shù)dbname,必需,表示要打開地?cái)?shù)據(jù)庫。該函數(shù)使用之后,返回一個布爾值,若是打開數(shù)據(jù)庫成功則返回true,否則返回false。mysqli_select_db()函數(shù)舉例修改mysql.php文件,連接數(shù)據(jù)庫成功之后,直接選擇打開指定地?cái)?shù)據(jù)庫email-1,若打開成功則輸出"打開數(shù)據(jù)庫email-1成功",否則輸出"打開數(shù)據(jù)庫email-1失敗"。5.3.3mysqli_query()函數(shù)連接MySQL成功之后,需要完成地操作通常包含如下幾個方面:第一,創(chuàng)建一個MySQL數(shù)據(jù)庫;第二,創(chuàng)建一個MySQL數(shù)據(jù)表;第三,定義訪問數(shù)據(jù)表地增刪查改操作語句,并執(zhí)行。完成其任何一種操作,都需要定義并執(zhí)行SQL語句,要執(zhí)行這些SQL語句,需要使用mysqli_query()函數(shù),該函數(shù)通常需要使用兩個參數(shù),格式如下:mysqli_query(connection,SQL)。mysqli_query()函數(shù)mysqli_query(connection,SQL)參數(shù)說明:參數(shù)connection,必需,規(guī)定要使用地MySQL連接;參數(shù)SQL,必需,表示定義地SQL語句。該函數(shù)地返回結(jié)果說明:若操作失敗,則返回false;若是成功執(zhí)行SELECT,SHOW,DESCRIBE或EXPLAIN查詢,則會返回一個mysqli_result對象,即查詢結(jié)果記錄集;若成功執(zhí)行其它操作,則返回真值true。應(yīng)用mysqli_query()函數(shù)1.創(chuàng)建數(shù)據(jù)庫email創(chuàng)建數(shù)據(jù)表創(chuàng)建數(shù)據(jù)表usermsg,結(jié)構(gòu)如圖所示這里地郵件地址,密碼與手機(jī)號為什么都使用varchar類型,而不使用char類型?應(yīng)用mysqli_query()函數(shù)例5-4創(chuàng)建create_usermsg.php文件,在連接MySQL成功并打開數(shù)據(jù)庫email之后,定義SQL語句,創(chuàng)建數(shù)據(jù)表usermsg,若是創(chuàng)建成功,則輸出"數(shù)據(jù)表usermsg創(chuàng)建成功",否則輸出"數(shù)據(jù)表usermsg創(chuàng)建失敗"。3.向數(shù)據(jù)表usermsg插入一條記錄例5-5創(chuàng)建文件insert_usermsg.php,在連接打開數(shù)據(jù)庫email之后,定義插入語句向數(shù)據(jù)表usermsg插入一條記錄,四個字段列值分別為"zhangpeipei","peipei11",,"2018-04-0910:04"。5.3.4mysqli_num_rows()函數(shù)函數(shù)作用:對數(shù)據(jù)表進(jìn)行查詢操作之后,通常需要獲取查詢結(jié)果記錄集地記錄數(shù),用于判斷查詢結(jié)果是否存在,或者用于控制輸出查詢結(jié)果記錄地次數(shù),獲取查詢結(jié)果集地記錄數(shù)需要使用mysql_num_rows()函數(shù)格式:mysqli_num_rows(resultset)

參數(shù)resultset表示查詢結(jié)果記錄集。mysqli_num_rows()舉例例5-6創(chuàng)建get_rows_usermsg.php文件,連接MySQL并打開數(shù)據(jù)庫email之后,設(shè)計(jì)查詢語句,查詢數(shù)據(jù)表usermsg地全部記錄,并輸出記錄個數(shù)。5.3.5mysqli_real_escape_string()函數(shù)應(yīng)用該函數(shù)地目地是為了防止SQL注入。SQL注入是黑客對數(shù)據(jù)庫進(jìn)行地常用手段之一。在編寫代碼地時(shí)候,如果沒有對用戶輸入數(shù)據(jù)地合法性進(jìn)行判斷,使得應(yīng)用程序存在安全隱患,這種情況下,惡意用戶可以提交一段數(shù)據(jù)庫查詢代碼,根據(jù)程序返回地結(jié)果,獲得某些它想惡意獲取地?cái)?shù)據(jù),這就是所謂地SQL注入。5.3.5mysqli_real_escape_string()函數(shù)例如,郵箱登錄時(shí)進(jìn)行身份驗(yàn)證地SQL語句如下:

$sql="select*fromusermsgwhere(emailaddr='$emailaddr')and(psd='$psd')"若用戶惡意填寫地郵件地址如下:

$emailaddr="'OR''='";惡意填寫地密碼信息如下:

$psd="'OR''='";此時(shí)得到地SQL語句如下:

$sql="select*fromusermsgwhere(emailaddr=''OR''='')and(psd=''OR''='')"此時(shí)查詢條件是成立地,這意味著任何用戶都無需輸入合法地賬號與密碼即可登錄。5.3.5mysqli_real_escape_string()函數(shù)在PHP可以通過函數(shù)mysqli_real_escape_string()有效防止注入,做法是將SQL語句地特殊字符進(jìn)行轉(zhuǎn)義,轉(zhuǎn)義時(shí)受影響地字符包括:\x00,\n,\r,\,',",\x1a。函數(shù)格式:mysqli_real_escape_string(connection,string)。參數(shù)說明:參數(shù)connection,必需,規(guī)定要使用地MySQL連接;參數(shù)string,必需,規(guī)定要轉(zhuǎn)義地字符串。使用函數(shù)mysqli_real_escape_string("'OR''='")轉(zhuǎn)義字符串之后地結(jié)果為"\'OR\'\'=\'",此時(shí)得到地查詢條件where(email

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論