電力出版社《PHP+MySQL開(kāi)發(fā)實(shí)例教程》全套課件(第8章)_第1頁(yè)
電力出版社《PHP+MySQL開(kāi)發(fā)實(shí)例教程》全套課件(第8章)_第2頁(yè)
電力出版社《PHP+MySQL開(kāi)發(fā)實(shí)例教程》全套課件(第8章)_第3頁(yè)
電力出版社《PHP+MySQL開(kāi)發(fā)實(shí)例教程》全套課件(第8章)_第4頁(yè)
電力出版社《PHP+MySQL開(kāi)發(fā)實(shí)例教程》全套課件(第8章)_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

PHP+MySQL開(kāi)發(fā)實(shí)例教程ISBN號(hào):978-7-5083-7194-8作者:毛書(shū)朋聶慶鵬653工程指定教材第8章PHP+MYSQL數(shù)據(jù)庫(kù)編程

8.1連接數(shù)據(jù)庫(kù)前的準(zhǔn)備工作8.2PHP操作MYSQL數(shù)據(jù)庫(kù)的流程8.3PHP操作MYSQL方法詳解8.4邊學(xué)邊做:用MySQL改寫(xiě)用戶(hù)注冊(cè)與登陸程序8.5本章小結(jié)8.6練習(xí)題8.1連接數(shù)據(jù)庫(kù)前的準(zhǔn)備工作

從PHP5開(kāi)始,不知道出于什么考慮,PHP開(kāi)發(fā)者放棄了對(duì)MySQL的默認(rèn)支持,而是放到了擴(kuò)展函數(shù)庫(kù)中。因此要使用MySQL函數(shù),需要首先開(kāi)啟MySQL函數(shù)庫(kù)。打開(kāi)php.ini,找到“;extensions=php_mysql.dll”,將此行面前的分號(hào)“;”去掉,保存之后重新啟動(dòng)IIS/APACHE。8.2PHP操作MYSQL數(shù)據(jù)庫(kù)的流程從根本上來(lái)說(shuō),PHP是通過(guò)預(yù)先寫(xiě)好的一些列函數(shù)來(lái)與MySQL數(shù)據(jù)庫(kù)進(jìn)行通信,向數(shù)據(jù)庫(kù)發(fā)送指令、接收返回?cái)?shù)據(jù)等都是通過(guò)函數(shù)來(lái)完成。圖9-1給出了一個(gè)普通PHP程序與MySQL進(jìn)行通信的基本原理示意圖。8.2PHP操作MYSQL數(shù)據(jù)庫(kù)的流程8.2PHP操作MYSQL數(shù)據(jù)庫(kù)的流程上圖展示了PHP程序連接到MySQL數(shù)據(jù)庫(kù)服務(wù)器的原理??梢钥闯?,PHP通過(guò)調(diào)用自身的專(zhuān)門(mén)用來(lái)處理MySQL數(shù)據(jù)庫(kù)連接的函數(shù),來(lái)實(shí)現(xiàn)與MySQL通信。而且,PHP并不是直接操作數(shù)據(jù)庫(kù)中的數(shù)據(jù),而是把要執(zhí)行的操作以SQL語(yǔ)句的形式發(fā)送給MySQL服務(wù)器,由MySQL服務(wù)器執(zhí)行這些指令,并將結(jié)果返回給PHP程序。MySQL數(shù)據(jù)庫(kù)服務(wù)器可以比作一個(gè)數(shù)據(jù)“管家”。其他程序需要這些數(shù)據(jù)時(shí),只需要向“管家”提出請(qǐng)求,“管家”就會(huì)根據(jù)要求進(jìn)行相關(guān)的操作或返回相應(yīng)的數(shù)據(jù)。8.2PHP操作MYSQL數(shù)據(jù)庫(kù)的流程8.2PHP操作MYSQL數(shù)據(jù)庫(kù)的流程明白了PHP操作MySQL的流程,我們就很容易掌握PHP操作MySQL的相關(guān)函數(shù)。因?yàn)橐陨蠋缀趺恳粋€(gè)步驟,都有相應(yīng)的函數(shù)與之對(duì)應(yīng)。開(kāi)發(fā)PHP數(shù)據(jù)庫(kù)程序時(shí),只需要按照流程調(diào)用相關(guān)函數(shù),數(shù)據(jù)庫(kù)操作便可輕松實(shí)現(xiàn)。8.3PHP操作MYSQL方法詳解

8.3.1PHP操作MySQL常用函數(shù)PHP中可以用來(lái)操作MYSQL數(shù)據(jù)庫(kù)的函數(shù)見(jiàn)表8-1:(詳見(jiàn)自編教材)這些函數(shù)中,最常用的有mysql_connect()、mysql_select_db()、mysql_query()、mysql_fetch_array()、mysql_num_rows()、mysql_close()等。下面我們就著重介紹這幾個(gè)函數(shù)的使用。8.3PHP操作MYSQL方法詳解

8.3.2PHP對(duì)MySQL數(shù)據(jù)庫(kù)的操縱

1、mysql_connect()函數(shù)resourcemysql_connect(stringserver,stringusername,stringpassword)該函數(shù)返回類(lèi)型為resource型,即資源型。三個(gè)參數(shù)分別為MySQL服務(wù)器地址、MySQL用戶(hù)名、密碼。這里的用戶(hù)名可以用超級(jí)管理員的,也可以用用戶(hù)表中存在的其他用戶(hù)。如下面的語(yǔ)句將用超級(jí)管理員身份建立一個(gè)到本地服務(wù)器的連接:例:$id=mysql_connect(“l(fā)ocalhost”,”root”,”1234”);8.3PHP操作MYSQL方法詳解

8.3.2PHP對(duì)MySQL數(shù)據(jù)庫(kù)的操縱1、mysql_connect()函數(shù)<?php$id=mysql_connect(“l(fā)ocalhost”,”root”,”1234”);echo$id;?>8.3PHP操作MYSQL方法詳解

8.3.2PHP對(duì)MySQL數(shù)據(jù)庫(kù)的操縱1、mysql_connect()函數(shù)如果出現(xiàn)下列提示:Warning:mysql_connect()[function.mysql-connect]:UnknownMySQLserverhost[…]則說(shuō)明MySQL服務(wù)器地址錯(cuò)誤,可能是輸入有錯(cuò)誤,或者服務(wù)器沒(méi)有啟動(dòng),或者端口號(hào)不對(duì)。這時(shí)可以檢查函數(shù)的第一個(gè)參數(shù)是否提供正確,MySQL是否已成功啟動(dòng)。8.3PHP操作MYSQL方法詳解

8.3.2PHP對(duì)MySQL數(shù)據(jù)庫(kù)的操縱

1、mysql_connect()函數(shù)還有可能出現(xiàn)下列提示:Warning:mysql_connect()[function.mysql-connect]:Accessdeniedforuser[…]這說(shuō)明用戶(hù)名或密碼有錯(cuò)誤?;蛘弑編ぬ?hào)沒(méi)有在本MySQL服務(wù)器上登陸的權(quán)限。我們這里之所以如此詳細(xì)地講解該函數(shù),就是因?yàn)檫@時(shí)連接到MySQL數(shù)據(jù)庫(kù)的第一步。只要這一步成功了,那么下面的所有函數(shù)便都能運(yùn)行。連接到數(shù)據(jù)庫(kù)是一切工作的起點(diǎn)。因此必須保證此步驟成功,才能繼續(xù)下面的內(nèi)容。

8.3PHP操作MYSQL方法詳解

8.3.2PHP對(duì)MySQL數(shù)據(jù)庫(kù)的操縱2、mysql_select_db()函數(shù)

例:文件8-1.php:連接到MySQL數(shù)據(jù)庫(kù)服務(wù)器并選擇數(shù)據(jù)庫(kù)8.3PHP操作MYSQL方法詳解

8.3.2PHP對(duì)MySQL數(shù)據(jù)庫(kù)的操縱3、mysql_query()函數(shù)例:文件8-2.php:用PHP程序創(chuàng)建新數(shù)據(jù)庫(kù)和表例:文件8-3.php:用PHP向表中插入數(shù)據(jù)例:文件8-4.php:用PHP從表中讀出數(shù)據(jù)

8.3PHP操作MYSQL方法詳解

8.3.2PHP對(duì)MySQL數(shù)據(jù)庫(kù)的操縱arraymysql_fetch_array(resourceresult[,intresult_type])

該函數(shù)的作用是,讀取記錄集result中的當(dāng)前記錄,將記錄的各個(gè)字段的值存入一個(gè)數(shù)組中,并返回這個(gè)數(shù)組,然后將記錄集指針移動(dòng)到下一條記錄。如果記錄集已經(jīng)到達(dá)末尾,則返回false。arraymysql_fetch_array(resourceresult[,intresult_type])

第二個(gè)參數(shù)result_type為可選,此參數(shù)用來(lái)設(shè)置返回的數(shù)組采用什么樣的下標(biāo)。有三個(gè)備選值:MYSQL_ASSOC、MYSQL_NUM、MYSQL_BOTH。三個(gè)參數(shù)的含義如下:8.3PHP操作MYSQL方法詳解

8.3.2PHP對(duì)MySQL數(shù)據(jù)庫(kù)的操縱①M(fèi)YSQL_ASSOC:返回的數(shù)組將以該記錄的字段名稱(chēng)作為下標(biāo)。如在本例中,要輸出此數(shù)組中的“姓名”字段,可以用$info[‘name’]。這里$info是數(shù)組名,“name”是存放姓名的字段名。②MYSQL_NUM:返回的數(shù)組以從0開(kāi)始的數(shù)字為下標(biāo)。在本例中,返回的每條記錄只有兩個(gè)字段,那么數(shù)組也就只有兩個(gè)元素,分別用$info[0]、$info[1]來(lái)引用。③MYSQL_BOTH:返回的數(shù)組既可以用字段名為下標(biāo),也可以用數(shù)字為下標(biāo)。在本例中,既可以用$info[0]來(lái)取得姓名,也可以用$info[‘name’]來(lái)取得。

8.3PHP操作MYSQL方法詳解

8.3.2PHP對(duì)MySQL數(shù)據(jù)庫(kù)的操縱

4、mysql_close()函數(shù)此函數(shù)用來(lái)關(guān)閉一個(gè)數(shù)據(jù)庫(kù)連接。其使用格式如下;boolmysql_close([resourcelink_identifier])本函數(shù)只有一個(gè)可選參數(shù)link_identifier。此參數(shù)表示要關(guān)閉的連接的ID。也就是mysql_connect()函數(shù)執(zhí)行成功后返回的一個(gè)連接標(biāo)記。參數(shù)為空時(shí)表示關(guān)閉當(dāng)前連接。該函數(shù)返回一個(gè)布爾型結(jié)果。當(dāng)關(guān)閉成功時(shí)返回true,關(guān)閉失敗是返回false。8.3PHP操作MYSQL方法詳解

8.3.2PHP對(duì)MySQL數(shù)據(jù)庫(kù)的操縱

4、mysql_close()函數(shù)<?php$id=mysql_connect(“l(fā)ocalhost”,”root”,”1234”);if(mysql_close($id)){echo“關(guān)閉數(shù)據(jù)庫(kù)連接成功!”;}else{echo“關(guān)閉數(shù)據(jù)庫(kù)連接失敗!”;}?>8.3PHP操作MYSQL方法詳解8.3.3PHP中數(shù)據(jù)分頁(yè)的實(shí)現(xiàn)在Web開(kāi)發(fā)中經(jīng)常遇到的一個(gè)問(wèn)題就是,對(duì)大量數(shù)據(jù)進(jìn)行分頁(yè)顯示。比如一個(gè)留言板有數(shù)千條留言,如果這些留言全都顯示在一個(gè)頁(yè)面上,頁(yè)面將變得很大難以瀏覽,有時(shí)過(guò)大的頁(yè)面還會(huì)導(dǎo)致瀏覽器停止相應(yīng)。PHP中提供了非常簡(jiǎn)單方法,可以對(duì)數(shù)據(jù)進(jìn)行分頁(yè)。下面我們就來(lái)看一下。8.3PHP操作MYSQL方法詳解8.3.3PHP中數(shù)據(jù)分頁(yè)的實(shí)現(xiàn)例:文件8-5.php:用PHP實(shí)現(xiàn)數(shù)據(jù)分頁(yè)顯示功能8.4邊學(xué)邊做:用MySQL改寫(xiě)用戶(hù)注冊(cè)與登陸程序

一、“邊學(xué)邊做”分析

在第6章中我們已經(jīng)做了用戶(hù)注冊(cè)與登陸的例子,其中我們事把用戶(hù)的注冊(cè)信息存放在記事本中,其實(shí)這樣的寫(xiě)法在現(xiàn)行的網(wǎng)絡(luò)中并不常見(jiàn),現(xiàn)在網(wǎng)絡(luò)上比較流行的還是用數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)用戶(hù)注冊(cè)的信息,這是因?yàn)閿?shù)據(jù)庫(kù)在存儲(chǔ)和查詢(xún)數(shù)據(jù)方面有著記事本無(wú)法比擬的優(yōu)勢(shì),當(dāng)用戶(hù)登錄的時(shí)候再與數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行校驗(yàn),如果一致允許登錄,反之提示錯(cuò)誤信息。我們要用數(shù)據(jù)庫(kù)存儲(chǔ)用戶(hù)注冊(cè)信息就要分析用戶(hù)注冊(cè)的信息項(xiàng),并設(shè)定相對(duì)應(yīng)的數(shù)據(jù)字段來(lái)進(jìn)行存儲(chǔ)。我們要用數(shù)據(jù)庫(kù)存儲(chǔ)用戶(hù)注冊(cè)信息就要分析用戶(hù)注冊(cè)的信息項(xiàng),并設(shè)定相對(duì)應(yīng)的數(shù)據(jù)字段來(lái)進(jìn)行存儲(chǔ)。8.4邊學(xué)邊做:用MySQL改寫(xiě)用戶(hù)注冊(cè)與登陸程序二、實(shí)施步驟1、創(chuàng)建數(shù)據(jù)庫(kù)和表本例中我們一共用到1個(gè)數(shù)據(jù)庫(kù)和1個(gè)表。數(shù)據(jù)庫(kù)名為login,數(shù)據(jù)表的名字位user_info,用來(lái)存儲(chǔ)用戶(hù)的注冊(cè)信息,其字段設(shè)置和字段數(shù)據(jù)類(lèi)型見(jiàn)下表:

8.4邊學(xué)邊做:用MySQL改寫(xiě)用戶(hù)注冊(cè)與登陸程序二、實(shí)施步驟1、創(chuàng)建數(shù)據(jù)庫(kù)和表打開(kāi)phpMyAdmin,按照上述設(shè)計(jì)創(chuàng)建數(shù)據(jù)庫(kù)和表。直接用SQL創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)表8.4邊學(xué)邊做:用MySQL改寫(xiě)用戶(hù)注冊(cè)與登陸程序創(chuàng)建數(shù)據(jù)庫(kù):CREATEDATABASE`login`;創(chuàng)建表user_info:CREATETABLE`user_info`(`id`int(11)NOTNULLauto_increment,`user_name`varchar(20)NOTNULL,`user_pass`varchar(20)NOTNULL,`head_pic`varchar(30)NOTNULL,PRIMARYKEY(`id`),UNIQUEKEY`id`(`id`))8.4邊學(xué)邊做:用MySQL改寫(xiě)用戶(hù)注冊(cè)與登陸程序2、代碼編寫(xiě)本實(shí)例共用到4個(gè)文件。分別是:login.html:用戶(hù)注冊(cè)信息頁(yè),同6.9中的login.html;login_action.php:用戶(hù)注冊(cè)信息記錄頁(yè),在6.9中的login_action.php的基礎(chǔ)上修改;land.html:用戶(hù)登錄信息頁(yè),同6.9中的land.html;land_action.php:用戶(hù)登錄信息校驗(yàn)頁(yè),在6.9中的land_action.php的基礎(chǔ)上修改;由于login.html和land.html和6.9中的完全一致,這兒就不再多說(shuō)。

8.4邊學(xué)邊做:用MySQL改寫(xiě)用戶(hù)注冊(cè)與登陸程序login_action.php的不同處是把原來(lái)51-59行的代碼替換成下面的代碼:51: $id=mysql_connect("localhost","root","root");52: mysql_select_db("login",$id);53: $query="insertintouser_info(user_name,user_pass,head_pic)values('$user_name','$user_pw1','$file_name')";54: mysql_query($query,$id);land_action.php的代碼如下:1:<!--文件login_action.php:用戶(hù)登陸-->2:<html>3:<head>4:<title>用戶(hù)登陸</title>5:</head>6:<body>7:<?php8.4邊學(xué)邊做:用MySQL改寫(xiě)用戶(hù)注冊(cè)與登陸程序8: $id=mysql_connect("localhost","root","root");9: mysql_select_db("login",$id);10: $user_name=$_POST["user_name"];11: $user_pw=$_POST["user_pw"];12: $query="select*fromuser_infowhereuser_name='$user_name'";13: $rst=mysql_query($query,$id);14: if(mysql_num_rows($rst)==0){15: echo"用戶(hù)名不存在,請(qǐng)<ahref=land.html>返回</a>";16: }else{17: $user=mysql_fetch_array($rst,MYSQL_ASSOC);18: if($user["user_

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論