PHP程序設(shè)計(jì)基礎(chǔ)第9章-PHP操作數(shù)據(jù)庫(kù)_第1頁(yè)
PHP程序設(shè)計(jì)基礎(chǔ)第9章-PHP操作數(shù)據(jù)庫(kù)_第2頁(yè)
PHP程序設(shè)計(jì)基礎(chǔ)第9章-PHP操作數(shù)據(jù)庫(kù)_第3頁(yè)
PHP程序設(shè)計(jì)基礎(chǔ)第9章-PHP操作數(shù)據(jù)庫(kù)_第4頁(yè)
PHP程序設(shè)計(jì)基礎(chǔ)第9章-PHP操作數(shù)據(jù)庫(kù)_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

PHP操作數(shù)據(jù)庫(kù)第九章目錄01Mysql與PHPmyadmin概述02PHP操作MySQL數(shù)據(jù)庫(kù)原理03PHP訪問(wèn)數(shù)據(jù)庫(kù)05PHP操作數(shù)據(jù)庫(kù)04MySQLi擴(kuò)展的使用01Mysql與PHPmyadmin概述Mysql登錄與密碼設(shè)置(1)登錄MySQL

在MySQL的“bin”目錄中的“mysql.exe”是MySQL提供的命令行工具,用于訪問(wèn)數(shù)據(jù)庫(kù)。在訪問(wèn)前,需要先登錄MySQL服務(wù)器,具體命令如下。mysql-hlocalhost-uroot如果需要退出MySQL,可以直接使用“exit”或“quit”命令退出登錄。01Mysql與PHPmyadmin概述(2)設(shè)置密碼為了保護(hù)數(shù)據(jù)庫(kù)的安全,需要為登錄MySQL服務(wù)器的用戶設(shè)置密碼。下面以設(shè)置root用戶的密碼為例,具體執(zhí)行的命令如下SETPASSWORDFOR`root`@`localhost`=PASSWORD(`123456`);上述命令表示為“l(fā)ocalhost”主機(jī)中的“root”用戶設(shè)置密碼,密碼為“123456”。當(dāng)設(shè)置密碼后,退出MySQL,然后重新登錄時(shí),就需要輸入剛才設(shè)置的密碼。01Mysql與PHPmyadmin概述登錄有密碼的用戶時(shí),需要使用的命令如下。mysql-hlocalhost-uroot-p123456在上述命令中,“-p123456”表示使用密碼“123456”進(jìn)行登錄。如果在登錄時(shí)不希望被直接看到密碼,可以省略“-p”后面的密碼,然后按【Enter】鍵,MySQL會(huì)提示輸入密碼,并且在輸入時(shí)不回顯。01Mysql與PHPmyadmin概述MySQL基本使用(1)數(shù)據(jù)庫(kù)管理數(shù)據(jù)庫(kù)的管理主要包括查看數(shù)據(jù)庫(kù)、創(chuàng)建數(shù)據(jù)庫(kù)、選擇數(shù)據(jù)庫(kù)和刪除數(shù)據(jù)庫(kù)。功能示例描述查看數(shù)據(jù)庫(kù)SHOWDATABASES;顯示MySQL數(shù)據(jù)庫(kù)服務(wù)器中已有的數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù)CREATEDATABASE`db_shop`;創(chuàng)建一個(gè)名稱為`db_shop`的數(shù)據(jù)庫(kù)選擇數(shù)據(jù)庫(kù)USE`db_shop`;選擇數(shù)據(jù)庫(kù)`db_shop`進(jìn)行操作刪除數(shù)據(jù)庫(kù)DROPDATABASE`db_shop`;刪除數(shù)據(jù)庫(kù)`db_shop`;01Mysql與PHPmyadmin概述(2)創(chuàng)建數(shù)據(jù)表數(shù)據(jù)表是數(shù)據(jù)庫(kù)中最基本的數(shù)據(jù)對(duì)象,用于存放數(shù)據(jù)。若想使用數(shù)據(jù)表,首先要選擇數(shù)據(jù)庫(kù),確定是在哪個(gè)數(shù)據(jù)庫(kù)中創(chuàng)建的數(shù)據(jù)表;其次要根據(jù)項(xiàng)目需求創(chuàng)建數(shù)據(jù)表,然后才能對(duì)數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行具體操作。MySQL中數(shù)據(jù)表的基本創(chuàng)建方式如下。創(chuàng)建并選擇數(shù)據(jù)庫(kù)CREATEDATABASEIFNOTEXISTS`db_stu`;USE`db_stu`;01Mysql與PHPmyadmin概述(3)數(shù)據(jù)表的管理對(duì)于一個(gè)創(chuàng)建好的數(shù)據(jù)表,可以查看表結(jié)構(gòu)、修改表結(jié)構(gòu),或者刪除不需要的數(shù)據(jù)表。功能示例描述查看數(shù)據(jù)表SHOWTABLES;查看數(shù)據(jù)庫(kù)中已有的表查看表結(jié)構(gòu)

DESC`student`;查看指定表的字段信息DESC`student``name`;查看指定表的某一列信息SHOWCREATETABLE`student`\G;查看數(shù)據(jù)表的創(chuàng)建語(yǔ)句和字符編碼SHOWCOLUMNSFROM`student`;查看表的結(jié)構(gòu)修改表結(jié)構(gòu)ALTERTABLE`student`ADD`area`VARCHAR(100);添加字段ALTERTABLE`student`CHANGE`area``desc`CHAR(50);修改字段名稱ALTERTABLE`student`MODIFY`desc`VARCHAR(255);修改字段類型ALTERTABLE`student`DROP`desc`;刪除指定字段ALTERTABLE`student`RENAME`stu`;修改數(shù)據(jù)表名稱重命名RENAMETABLE`stu`TO`student`;將名字為stu的表重命名為student刪除數(shù)據(jù)表DROPTABLEIFEXISTS`student`;刪除存在的數(shù)據(jù)表student01Mysql與PHPmyadmin概述(4)數(shù)據(jù)管理數(shù)據(jù)的添加、查詢、修改及刪除操作在項(xiàng)目開(kāi)發(fā)中是必不可少的。我們以學(xué)生信息表student的操作為例進(jìn)行演示。添加數(shù)據(jù)為數(shù)據(jù)表添加數(shù)據(jù)時(shí),可以根據(jù)實(shí)際需求確定是指定字段插入還是省略字段插入,具體SQL語(yǔ)句如下:01Mysql與PHPmyadmin概述#指定字段插入INSERTINTO`student`(`name`,`gender`)VALUES(`Tom`,`男`),(`Lucy`,`女`);#省略字段插入INSERTINTO`student`VALUES(NULL,`Coco`,`女`),(NULL,`Jimmy`,`男`);上述SQL語(yǔ)句中,當(dāng)省略字段列表執(zhí)行插入操作中,必須嚴(yán)格按照數(shù)據(jù)表定義字段時(shí)的順序,在值列表中為字段指定相應(yīng)的數(shù)據(jù)。若字段設(shè)置為自動(dòng)增長(zhǎng),添加數(shù)據(jù)時(shí)可以使用NULL進(jìn)行占位。01Mysql與PHPmyadmin概述查詢數(shù)據(jù)在對(duì)數(shù)據(jù)進(jìn)行查詢時(shí),不僅可以查詢所有數(shù)據(jù),還可以指定字段或按照特定條件進(jìn)行查詢。SELECT*FROM`student`;#查詢表中所有數(shù)據(jù)SELECT`name`FROM`student`;#查詢表中指定字段SELECT*FROM`student`WHERE`id`=2;#查詢id等于2的學(xué)生信息SELECT*FROM`student`WHERE`id`IN(4,5);#查詢id為4或者5的學(xué)生信息01Mysql與PHPmyadmin概述在SQL語(yǔ)句中,F(xiàn)ROM用于指定待查詢的數(shù)據(jù)表,WHERE用于指定查詢條件,IN關(guān)鍵字用于判斷某個(gè)字段的值是否在指定集合中;LIKE用于模糊查詢,“%”表示一個(gè)或多個(gè)字符;ORDERBY用于將查詢結(jié)果按照指定字段進(jìn)行排序,ASC表示升序,DESC表示降序;LIMIT用于限定查詢結(jié)果,GROUPBY用于按照指定字段進(jìn)行分組查詢。01Mysql與PHPmyadmin概述修改數(shù)據(jù)修改數(shù)據(jù)是數(shù)據(jù)庫(kù)的常見(jiàn)操作。例如,將學(xué)生信息表中的UPDATE`student`SET`name`=`Ann`WHERE`id`=6;#有條件修改UPDATE`student`SET`name`=`Ann`; #無(wú)條件修改需要注意的是,在執(zhí)行UPDATE語(yǔ)句時(shí),若沒(méi)有使用WHERE子句,則會(huì)更新中所有記錄的指定字段,因此在實(shí)際開(kāi)發(fā)中應(yīng)該謹(jǐn)慎使用。01Mysql與PHPmyadmin概述刪除數(shù)據(jù)在數(shù)據(jù)庫(kù)中,若有些數(shù)據(jù)已失去意義或者錯(cuò)誤時(shí),就需要將他們刪除,常用的幾種方式如下DELETEFROM`student`WHERE`gender`=‘女’;#刪除部分?jǐn)?shù)據(jù)DELETEFROM`student`;#刪除全部數(shù)據(jù)庫(kù)TRUNCATE`student`;#清空數(shù)據(jù)表02PHP操作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)完成。02PHP操作MySQL數(shù)據(jù)庫(kù)原理上圖展示了PHP程序連接到MySQL數(shù)據(jù)庫(kù)服務(wù)器的原理??梢钥闯?,PHP通過(guò)調(diào)用自身的專門用來(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程序。02PHP操作MySQL數(shù)據(jù)庫(kù)原理02PHP操作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)。03PHP訪問(wèn)數(shù)據(jù)庫(kù)PHP作為一門編程語(yǔ)言,其本身并不具備操作數(shù)據(jù)庫(kù)的功能。因此,若想要在項(xiàng)目開(kāi)發(fā)完成PHP應(yīng)用和MSQL數(shù)據(jù)庫(kù)之間的交互,則需借助PHP提供的數(shù)據(jù)庫(kù)擴(kuò)展。在PHP中提供了多種數(shù)據(jù)庫(kù)擴(kuò)展,其中常用的分別有MySQL擴(kuò)展、MySQLi擴(kuò)展和PDO擴(kuò)展,它們各自的特點(diǎn)如下。03PHP訪問(wèn)數(shù)據(jù)庫(kù)1.MySQL擴(kuò)展MySQL擴(kuò)展是針對(duì)MSQL4.1.3或更早版本設(shè)計(jì)的,是PHP與MSQL數(shù)據(jù)庫(kù)交互的早期展。由于其不支持MySQL數(shù)據(jù)庫(kù)服務(wù)器的新特性,且安全性差,在項(xiàng)目開(kāi)發(fā)中不建議使用可用MySQLi擴(kuò)展代替。并且在PHP7中,已經(jīng)徹底淘汰了MySQL擴(kuò)展。03PHP訪問(wèn)數(shù)據(jù)庫(kù)2.MySQLi擴(kuò)展MySQLi擴(kuò)展是MySQL擴(kuò)展的增強(qiáng)版,它不僅包含了所有MySQL擴(kuò)展的功能函數(shù),還可以使用MySQL新版本中的高級(jí)特性。例如,多語(yǔ)句執(zhí)行和事務(wù)的支持,預(yù)處理方式解決了SQL注入問(wèn)題等。MySQLi擴(kuò)展只支持MySQL數(shù)據(jù)庫(kù),如果不考慮其他數(shù)據(jù)庫(kù),該擴(kuò)展是一個(gè)非好的選擇。雖然MySQLi擴(kuò)展默認(rèn)已經(jīng)安裝,但使用時(shí)還需要開(kāi)啟。打開(kāi)PHP的配置文件php.ini,找到如下一行配置取消注釋,然后重新啟動(dòng)Apache服務(wù)使配置生效。

;extension=php_mysqli.dll03PHP訪問(wèn)數(shù)據(jù)庫(kù)3.PDO擴(kuò)展PDO是PHPDataObjects(PHP數(shù)據(jù)對(duì)象)的簡(jiǎn)稱,它提供了一個(gè)統(tǒng)一的API接口,只要修改其中的DSN(數(shù)據(jù)源),就可以實(shí)現(xiàn)PHP應(yīng)用與不同類型數(shù)據(jù)庫(kù)服務(wù)器之間的交互。解決了早期PHP版本中不同數(shù)據(jù)庫(kù)擴(kuò)展的應(yīng)用程序接口互不兼容的問(wèn)題,提高了程序的可維護(hù)性和可移植性。03PHP訪問(wèn)數(shù)據(jù)庫(kù)通過(guò)MySQL的數(shù)據(jù)操作學(xué)習(xí),大家了解到想要完成對(duì)MySQL數(shù)據(jù)庫(kù)的操作,首先需要啟動(dòng)MySQL數(shù)據(jù)庫(kù)服務(wù)器,輸入用戶名和密碼;然后選擇要操作的數(shù)據(jù)庫(kù),執(zhí)行具體SQL語(yǔ)句,獲取到結(jié)果。同樣的,在PHP應(yīng)用中,要想完成與MySQL服務(wù)器的交互,也需要經(jīng)過(guò)上述步驟。PHP訪問(wèn)MySQL的基本步驟具體如下所示。03PHP訪問(wèn)數(shù)據(jù)庫(kù)04MySQLi擴(kuò)展的使用1.連接數(shù)據(jù)庫(kù)MySQLi擴(kuò)展為PHP與數(shù)據(jù)庫(kù)的連接提供了mysqli_connect()函數(shù),其聲明方式如下。mysqlimysqli_connect( string$host=ini_get(‘mysqli,default_host’),//主機(jī)名或者IP string$username=ini_get(‘mysqli.default_user’),//用戶名

string$passwd=ini_get(‘mysqli.default_pw`’),//密碼string$dbname=‘’,//數(shù)據(jù)庫(kù)名

int$port=ini_get(‘mysqli.default_port`’),//端口號(hào)

string$socket=ini_get(‘mysqli.default_socket`’)//socket通信)04MySQLi擴(kuò)展的使用上述語(yǔ)法中,mysqli_connect()函數(shù)共有6個(gè)可選參數(shù),當(dāng)省略參數(shù)時(shí),將自動(dòng)使用php.ini中配置的默認(rèn)值。連接成功時(shí),該函數(shù)返回一個(gè)表示數(shù)據(jù)庫(kù)連接的對(duì)象;連接失敗時(shí),函數(shù)回false,并提示W(wǎng)arning級(jí)錯(cuò)誤信息。其中,參數(shù)socket表示mysql.sock文件路徑(用于Linux環(huán)境),通常不需要手動(dòng)設(shè)置。04MySQLi擴(kuò)展的使用值得一提的是,在使用MySQL命令行工具操作數(shù)據(jù)庫(kù)時(shí),需要使用“SETNAMES”設(shè)置字符集,同樣也需要在PHP中設(shè)置字符集,具體代碼如下。//連接數(shù)據(jù)庫(kù)$link=mysqli_connect('localhost','root','');//設(shè)置字符集mysqli_set_charset($link,'utf8');上述代碼通過(guò)mysqli_set_charset()函數(shù)將字符集設(shè)置為“utf8”。04MySQLi擴(kuò)展的使用2.執(zhí)行SQL語(yǔ)句 完成PHP與MySQL服務(wù)器的連接后,就可以通過(guò)SQL語(yǔ)句操作數(shù)據(jù)庫(kù)了,在MySQLi擴(kuò)展中,通常使用mysqli_query()函數(shù)發(fā)送SQL語(yǔ)句,獲取執(zhí)行結(jié)果,函數(shù)的聲明方式如下。

mixedmysqli_query( mysqli$link, string$query, int$resultmode=MYSQLI_STORE_RESULT)04MySQLi擴(kuò)展的使用在上述聲明中,$link表示通過(guò)mysqli_connect()函數(shù)獲取的數(shù)據(jù)庫(kù)連接,$query表示SQL語(yǔ)句。當(dāng)函數(shù)執(zhí)行SELECT,SHOW,DESCRIBE或EXPLAIN查詢時(shí),返回值時(shí)查詢結(jié)果集,而對(duì)于其他查詢,執(zhí)行成功返回true,否則返回false。此外,可選參數(shù)$resultmode表示結(jié)果集模式,其值可以是以下兩種常量。 MYSQLI_STORE_RESULT模式:會(huì)將結(jié)果集全部讀取到PHP端 MYSQLI_USE_RESULT模式:僅初始化結(jié)果集檢索,在處理結(jié)果集時(shí)進(jìn)行數(shù)據(jù)讀取04MySQLi擴(kuò)展的使用3.處理結(jié)果集 由于函數(shù)mysqli_query()在執(zhí)行SELECT、SHOW、EXPLAIN或DESCRIBE的SQL語(yǔ)句后,返回的是一個(gè)資源類型的結(jié)果集,因此,需要使用函數(shù)從結(jié)果集中獲取信息。MySQLi擴(kuò)展中常用的處理結(jié)果集的函數(shù)如表所示。函數(shù)名描述mysqli_num_rows()獲取結(jié)果中的行的數(shù)量mysqli_fetch_all()獲取所有的結(jié)果,并以數(shù)組方式放回mysqli_fetch_array()獲取一行結(jié)果,并以數(shù)組方式返回mysqli_fetch_assoc()獲取一行結(jié)果并以關(guān)聯(lián)數(shù)組返回mysqli_fetch_row()獲取一行結(jié)果并以索引數(shù)組返回04MySQLi擴(kuò)展的使用函數(shù)mysqli_fetch_a

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論