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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

8.3.1PHP操作MySQL常用函數(shù)PHP中可以用來操作MYSQL數(shù)據(jù)庫的函數(shù)見表8-1:(詳見自編教材)這些函數(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ù)庫的操縱

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

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

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

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

8.3PHP操作MYSQL方法詳解

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

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

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

8.3PHP操作MYSQL方法詳解

8.3.2PHP對(duì)MySQL數(shù)據(jù)庫的操縱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ù)用來設(shè)置返回的數(shù)組采用什么樣的下標(biāo)。有三個(gè)備選值:MYSQL_ASSOC、MYSQL_NUM、MYSQL_BOTH。三個(gè)參數(shù)的含義如下:8.3PHP操作MYSQL方法詳解

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

8.3PHP操作MYSQL方法詳解

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

4、mysql_close()函數(shù)此函數(shù)用來關(guān)閉一個(gè)數(shù)據(jù)庫連接。其使用格式如下;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ù)庫的操縱

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

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

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

8.4邊學(xué)邊做:用MySQL改寫用戶注冊(cè)與登陸程序二、實(shí)施步驟1、創(chuàng)建數(shù)據(jù)庫和表打開phpMyAdmin,按照上述設(shè)計(jì)創(chuàng)建數(shù)據(jù)庫和表。直接用SQL創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表8.4邊學(xué)邊做:用MySQL改寫用戶注冊(cè)與登陸程序創(chuàng)建數(shù)據(jù)庫: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改寫用戶注冊(cè)與登陸程序2、代碼編寫本實(shí)例共用到4個(gè)文件。分別是:login.html:用戶注冊(cè)信息頁,同6.9中的login.html;login_action.php:用戶注冊(cè)信息記錄頁,在6.9中的login_action.php的基礎(chǔ)上修改;land.html:用戶登錄信息頁,同6.9中的land.html;land_action.php:用戶登錄信息校驗(yàn)頁,在6.9中的land_action.php的基礎(chǔ)上修改;由于login.html和land.html和6.9中的完全一致,這兒就不再多說。

8.4邊學(xué)邊做:用MySQL改寫用戶注冊(cè)與登陸程序login_action.php的不同處是把原來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:用戶登陸-->2:<html>3:<head>4:<title>用戶登陸</title>5:</head>6:<body>7:<?php8.4邊學(xué)邊做:用MySQL改寫用戶注冊(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"用戶名不存在,請(qǐng)<ahref=land.html>返回</a>";16: }else{17: $user=mysql_fetch_array($rst,MYSQL_ASSOC);18: if($user["user_

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論