回顧查詢:分組(group by:統(tǒng)計(jì)),having(條件),排序(order by),限制(limit offset,length) 聯(lián)合查詢:記錄疊加,排序(order by:1.必須配合limit,查詢子句必須使用括號(hào)) 子查詢:子查詢分類(標(biāo)量,列,行(構(gòu)建行元素)和表(數(shù)據(jù)源:from之后)) 視圖:虛擬表(有結(jié)構(gòu),沒(méi)有數(shù)據(jù)),視圖數(shù)據(jù)操作 PHP操作MYSQL1. mysql是什么軟件結(jié)構(gòu)? c/s軟件結(jié)構(gòu) 必須通過(guò)客戶端才能訪問(wèn)服務(wù)器。 2. php操作mysql是個(gè)什么意思? php模擬客戶端,去操作數(shù)據(jù)庫(kù)。 PHP不能操作mysql,mysql為php提供了一個(gè)可以操作的擴(kuò)展,php需要加載該擴(kuò)展就可以實(shí)現(xiàn)操作數(shù)據(jù)庫(kù)。 PHP操作數(shù)據(jù)庫(kù)過(guò)程1. 加載mysql為php提供的操作擴(kuò)展 a) 允許php去加載擴(kuò)展 b) 指定擴(kuò)展路徑 PHP已經(jīng)成為了可以操作mysql服務(wù)器的客戶端。 2. 連接認(rèn)證:找到mysql服務(wù)器所在的電腦以及所監(jiān)聽的端口,然后輸入正確的用戶名和密碼:mysql.exe –h主機(jī) –P端口 –u用戶名 –p密碼 PHP操作mysql,通過(guò)函數(shù)mysql_connect連接操作 resource mysql_connect(主機(jī)地址:端口,用戶名,密碼); //連接資源 多次連接,返回是同一個(gè)連接資源 PHP可以通過(guò)mysql_connect的第四個(gè)參數(shù)來(lái)指定,是否獲取不同的連接資源,默認(rèn)的是同一個(gè)資源。 3. PHP作為客戶端:準(zhǔn)備SQL語(yǔ)句 4. PHP作為客戶端:發(fā)送SQL語(yǔ)句/接收返回的執(zhí)行結(jié)果 mixed mysql_query(要發(fā)送的SQL語(yǔ)句[,指定的連接資源]); 布爾類型結(jié)果:要執(zhí)行的SQL語(yǔ)句沒(méi)有返回值 返回值類型結(jié)果:要執(zhí)行SQL語(yǔ)句有返回結(jié)果,返回的結(jié)果是一個(gè)資源:結(jié)果集資源 5. php作為客戶端:解析返回結(jié)果(資源) mixed mysql_fetch_row(結(jié)果集資源):從結(jié)果集中取出一行記錄,將該記錄的所有字段的數(shù)據(jù)當(dāng)做一個(gè)個(gè)元素存放到一個(gè)數(shù)組里面,數(shù)組的下標(biāo)是自動(dòng)生成(索引):應(yīng)用的原理是結(jié)果集指針,如果有數(shù)據(jù)返回?cái)?shù)組,沒(méi)有數(shù)據(jù)返回false。 6. 釋放資源:斷開連接,把連接資源給釋放 mysql_free_result(結(jié)果集資源):釋放結(jié)果集資源 mysql_close(連接資源):斷開連接資源 流程圖完整PHP操作mysql1. 要對(duì)可能出現(xiàn)的錯(cuò)誤進(jìn)行處理 mysql_errno():mysql出錯(cuò)的錯(cuò)誤編號(hào) mysql_error():mysql出錯(cuò)的錯(cuò)誤描述 2. 對(duì)數(shù)據(jù)結(jié)果進(jìn)行完整處理 1. 連接認(rèn)證 2. 設(shè)置字符集 3. 選擇數(shù)據(jù)庫(kù) 4. 數(shù)據(jù)操作:增刪改查 4.1 新增數(shù)據(jù) 新增數(shù)據(jù)的情況下,通常會(huì)去獲得新增數(shù)據(jù)的自增長(zhǎng)id mysql_insert_id():獲取上一次新增操作的自增長(zhǎng)id,如果沒(méi)有自增長(zhǎng)就是0 4.2 查詢操作 可以通過(guò)三個(gè)函數(shù)對(duì)結(jié)果集進(jìn)行操作,得到的結(jié)果不一樣,都是返回?cái)?shù)組 mysql_fetch_array(結(jié)果集資源[,獲取模式]):從結(jié)果集中取出一樣記錄,返回一個(gè)關(guān)聯(lián)索引數(shù)組是默認(rèn)的,也可以通過(guò)獲取模式來(lái)指定獲取方式,可以是索引的,也可以是關(guān)聯(lián)的。 mysql_fetch_row():獲取一個(gè)索引數(shù)組,內(nèi)部就是通過(guò)mysql_fetch_array(,MYSQL_NUM) mysql_fetch_assoc():獲取一個(gè)關(guān)聯(lián)數(shù)組,鍵名是表中的字段名,值是字段對(duì)應(yīng)的數(shù)據(jù) 以上三個(gè)函數(shù):都是通過(guò)結(jié)果集指針移動(dòng)來(lái)實(shí)現(xiàn),獲取完數(shù)據(jù)之后會(huì)移動(dòng)指針(指針下移) 5. 釋放資源 釋放結(jié)果集資源和連接資源 項(xiàng)目項(xiàng)目任務(wù)使用php+mysql編程,做一個(gè)動(dòng)態(tài)網(wǎng)站。 1. 確定任務(wù) 做一個(gè)簡(jiǎn)單學(xué)員管理系統(tǒng),需要登錄后才能查看學(xué)生信息 2. 需求分析 功能:登錄功能,注冊(cè)功能,查看學(xué)生信息(分頁(yè)) 數(shù)據(jù)庫(kù):用戶表,學(xué)生信息表,班級(jí)表,教師表 注冊(cè)功能1. 制作表單 2. 制定表單提交的腳本 3. 創(chuàng)建服務(wù)器腳本:判斷用戶請(qǐng)求的方式(直接訪問(wèn)/提交) 4. 接收用戶提交的數(shù)據(jù) 5. 數(shù)據(jù)合法性驗(yàn)證:用戶名和密碼不能為空,兩次輸入的密碼必須得一致;密碼長(zhǎng)度限制… 6. 出現(xiàn)重復(fù)代碼:提取重復(fù)代碼,存放到公共文件中,public.php 7. 使用公共文件:在需要使用的腳本中引入公共文件。register.php 應(yīng)用 8. 數(shù)據(jù)有效性驗(yàn)證:用戶名必須唯一,在數(shù)據(jù)庫(kù)中不存在 數(shù)據(jù)庫(kù)初始化:公共文件中(會(huì)被多個(gè)腳本重復(fù)利用) 調(diào)用公共文件 查詢公共函數(shù) 調(diào)用查詢公共函數(shù) 9. 插入數(shù)據(jù)庫(kù) 登錄功能1. 增加登錄表單 2. 修改提交腳本對(duì)象:form表單 3. 創(chuàng)建登錄腳本login.php 4. 引入公共文件 5. 接收用戶提交的信息 6. 合法性驗(yàn)證:都不能為空 7. 有效性驗(yàn)證:驗(yàn)證用戶信息 顯示功能1. 新增一個(gè)后臺(tái)的處理php腳本的界面:index.php 2. 登錄成功跳轉(zhuǎn)到index.php 3. 增加頭部顯示數(shù)據(jù):顯示歡迎語(yǔ)句 登錄成功之后,需要將當(dāng)前用戶的信息傳遞給index.php 應(yīng)該在index.php界面中接收用戶信息 在index.html中顯示用戶信息 4. 增加左側(cè)菜單顯示 5. 顯示學(xué)生信息(右側(cè)內(nèi)容) 增加顯示格式:index.html 增加顯示的數(shù)據(jù):index.php 顯示所有數(shù)據(jù):index.html 6. 分頁(yè)功能 增加分頁(yè)連接 分頁(yè)連接請(qǐng)求腳本確定:index.php 確定分頁(yè)條件:頁(yè)碼和每頁(yè)顯示的數(shù)據(jù)長(zhǎng)度,index.php 確定limit條件:offset和length 修改SQL語(yǔ)句,查詢不通頁(yè)的數(shù)據(jù) 求出對(duì)應(yīng)的頁(yè)碼:上一頁(yè),下一頁(yè)和末頁(yè) 將頁(yè)碼放到對(duì)應(yīng)的a鏈接 7. 因?yàn)楫?dāng)前index.php是通過(guò)參數(shù)username判斷用戶是否登錄,必須保證點(diǎn)擊分頁(yè)的時(shí)候用戶是登錄了的,攜帶用戶參數(shù)。 知識(shí)應(yīng)用 |
|