版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
PHP操作數(shù)據(jù)庫第九章目錄01Mysql與PHPmyadmin概述02PHP操作MySQL數(shù)據(jù)庫原理03PHP訪問數(shù)據(jù)庫05PHP操作數(shù)據(jù)庫04MySQLi擴(kuò)展的使用01Mysql與PHPmyadmin概述Mysql登錄與密碼設(shè)置(1)登錄MySQL
在MySQL的“bin”目錄中的“mysql.exe”是MySQL提供的命令行工具,用于訪問數(shù)據(jù)庫。在訪問前,需要先登錄MySQL服務(wù)器,具體命令如下。mysql-hlocalhost-uroot如果需要退出MySQL,可以直接使用“exit”或“quit”命令退出登錄。01Mysql與PHPmyadmin概述(2)設(shè)置密碼為了保護(hù)數(shù)據(jù)庫的安全,需要為登錄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ù)庫管理數(shù)據(jù)庫的管理主要包括查看數(shù)據(jù)庫、創(chuàng)建數(shù)據(jù)庫、選擇數(shù)據(jù)庫和刪除數(shù)據(jù)庫。功能示例描述查看數(shù)據(jù)庫SHOWDATABASES;顯示MySQL數(shù)據(jù)庫服務(wù)器中已有的數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫CREATEDATABASE`db_shop`;創(chuàng)建一個(gè)名稱為`db_shop`的數(shù)據(jù)庫選擇數(shù)據(jù)庫USE`db_shop`;選擇數(shù)據(jù)庫`db_shop`進(jìn)行操作刪除數(shù)據(jù)庫DROPDATABASE`db_shop`;刪除數(shù)據(jù)庫`db_shop`;01Mysql與PHPmyadmin概述(2)創(chuàng)建數(shù)據(jù)表數(shù)據(jù)表是數(shù)據(jù)庫中最基本的數(shù)據(jù)對(duì)象,用于存放數(shù)據(jù)。若想使用數(shù)據(jù)表,首先要選擇數(shù)據(jù)庫,確定是在哪個(gè)數(shù)據(jù)庫中創(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ù)庫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ù)庫中已有的表查看表結(jié)構(gòu)
DESC`student`;查看指定表的字段信息DESC`student``name`;查看指定表的某一列信息SHOWCREATETABLE`student`\G;查看數(shù)據(jù)表的創(chuàng)建語句和字符編碼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)目開發(fā)中是必不可少的。我們以學(xué)生信息表student的操作為例進(jìn)行演示。添加數(shù)據(jù)為數(shù)據(jù)表添加數(shù)據(jù)時(shí),可以根據(jù)實(shí)際需求確定是指定字段插入還是省略字段插入,具體SQL語句如下:01Mysql與PHPmyadmin概述#指定字段插入INSERTINTO`student`(`name`,`gender`)VALUES(`Tom`,`男`),(`Lucy`,`女`);#省略字段插入INSERTINTO`student`VALUES(NULL,`Coco`,`女`),(NULL,`Jimmy`,`男`);上述SQL語句中,當(dāng)省略字段列表執(zhí)行插入操作中,必須嚴(yán)格按照數(shù)據(jù)表定義字段時(shí)的順序,在值列表中為字段指定相應(yīng)的數(shù)據(jù)。若字段設(shè)置為自動(dò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語句中,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ù)庫的常見操作。例如,將學(xué)生信息表中的UPDATE`student`SET`name`=`Ann`WHERE`id`=6;#有條件修改UPDATE`student`SET`name`=`Ann`; #無條件修改需要注意的是,在執(zhí)行UPDATE語句時(shí),若沒有使用WHERE子句,則會(huì)更新中所有記錄的指定字段,因此在實(shí)際開發(fā)中應(yīng)該謹(jǐn)慎使用。01Mysql與PHPmyadmin概述刪除數(shù)據(jù)在數(shù)據(jù)庫中,若有些數(shù)據(jù)已失去意義或者錯(cuò)誤時(shí),就需要將他們刪除,常用的幾種方式如下DELETEFROM`student`WHERE`gender`=‘女’;#刪除部分?jǐn)?shù)據(jù)DELETEFROM`student`;#刪除全部數(shù)據(jù)庫TRUNCATE`student`;#清空數(shù)據(jù)表02PHP操作MySQL數(shù)據(jù)庫原理從根本上來說,PHP是通過預(yù)先寫好的一系列函數(shù)來與MySQL數(shù)據(jù)庫進(jìn)行通信,向數(shù)據(jù)庫發(fā)送指令、接收返回?cái)?shù)據(jù)等都是通過函數(shù)來完成。02PHP操作MySQL數(shù)據(jù)庫原理上圖展示了PHP程序連接到MySQL數(shù)據(jù)庫服務(wù)器的原理??梢钥闯觯琍HP通過調(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程序。02PHP操作MySQL數(shù)據(jù)庫原理02PHP操作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)。03PHP訪問數(shù)據(jù)庫PHP作為一門編程語言,其本身并不具備操作數(shù)據(jù)庫的功能。因此,若想要在項(xiàng)目開發(fā)完成PHP應(yīng)用和MSQL數(shù)據(jù)庫之間的交互,則需借助PHP提供的數(shù)據(jù)庫擴(kuò)展。在PHP中提供了多種數(shù)據(jù)庫擴(kuò)展,其中常用的分別有MySQL擴(kuò)展、MySQLi擴(kuò)展和PDO擴(kuò)展,它們各自的特點(diǎn)如下。03PHP訪問數(shù)據(jù)庫1.MySQL擴(kuò)展MySQL擴(kuò)展是針對(duì)MSQL4.1.3或更早版本設(shè)計(jì)的,是PHP與MSQL數(shù)據(jù)庫交互的早期展。由于其不支持MySQL數(shù)據(jù)庫服務(wù)器的新特性,且安全性差,在項(xiàng)目開發(fā)中不建議使用可用MySQLi擴(kuò)展代替。并且在PHP7中,已經(jīng)徹底淘汰了MySQL擴(kuò)展。03PHP訪問數(shù)據(jù)庫2.MySQLi擴(kuò)展MySQLi擴(kuò)展是MySQL擴(kuò)展的增強(qiáng)版,它不僅包含了所有MySQL擴(kuò)展的功能函數(shù),還可以使用MySQL新版本中的高級(jí)特性。例如,多語句執(zhí)行和事務(wù)的支持,預(yù)處理方式解決了SQL注入問題等。MySQLi擴(kuò)展只支持MySQL數(shù)據(jù)庫,如果不考慮其他數(shù)據(jù)庫,該擴(kuò)展是一個(gè)非好的選擇。雖然MySQLi擴(kuò)展默認(rèn)已經(jīng)安裝,但使用時(shí)還需要開啟。打開PHP的配置文件php.ini,找到如下一行配置取消注釋,然后重新啟動(dòng)Apache服務(wù)使配置生效。
;extension=php_mysqli.dll03PHP訪問數(shù)據(jù)庫3.PDO擴(kuò)展PDO是PHPDataObjects(PHP數(shù)據(jù)對(duì)象)的簡稱,它提供了一個(gè)統(tǒng)一的API接口,只要修改其中的DSN(數(shù)據(jù)源),就可以實(shí)現(xiàn)PHP應(yīng)用與不同類型數(shù)據(jù)庫服務(wù)器之間的交互。解決了早期PHP版本中不同數(shù)據(jù)庫擴(kuò)展的應(yīng)用程序接口互不兼容的問題,提高了程序的可維護(hù)性和可移植性。03PHP訪問數(shù)據(jù)庫通過MySQL的數(shù)據(jù)操作學(xué)習(xí),大家了解到想要完成對(duì)MySQL數(shù)據(jù)庫的操作,首先需要啟動(dòng)MySQL數(shù)據(jù)庫服務(wù)器,輸入用戶名和密碼;然后選擇要操作的數(shù)據(jù)庫,執(zhí)行具體SQL語句,獲取到結(jié)果。同樣的,在PHP應(yīng)用中,要想完成與MySQL服務(wù)器的交互,也需要經(jīng)過上述步驟。PHP訪問MySQL的基本步驟具體如下所示。03PHP訪問數(shù)據(jù)庫04MySQLi擴(kuò)展的使用1.連接數(shù)據(jù)庫MySQLi擴(kuò)展為PHP與數(shù)據(jù)庫的連接提供了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ù)庫名
int$port=ini_get(‘mysqli.default_port`’),//端口號(hào)
string$socket=ini_get(‘mysqli.default_socket`’)//socket通信)04MySQLi擴(kuò)展的使用上述語法中,mysqli_connect()函數(shù)共有6個(gè)可選參數(shù),當(dāng)省略參數(shù)時(shí),將自動(dòng)使用php.ini中配置的默認(rèn)值。連接成功時(shí),該函數(shù)返回一個(gè)表示數(shù)據(jù)庫連接的對(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ù)庫時(shí),需要使用“SETNAMES”設(shè)置字符集,同樣也需要在PHP中設(shè)置字符集,具體代碼如下。//連接數(shù)據(jù)庫$link=mysqli_connect('localhost','root','');//設(shè)置字符集mysqli_set_charset($link,'utf8');上述代碼通過mysqli_set_charset()函數(shù)將字符集設(shè)置為“utf8”。04MySQLi擴(kuò)展的使用2.執(zhí)行SQL語句 完成PHP與MySQL服務(wù)器的連接后,就可以通過SQL語句操作數(shù)據(jù)庫了,在MySQLi擴(kuò)展中,通常使用mysqli_query()函數(shù)發(fā)送SQL語句,獲取執(zhí)行結(jié)果,函數(shù)的聲明方式如下。
mixedmysqli_query( mysqli$link, string$query, int$resultmode=MYSQLI_STORE_RESULT)04MySQLi擴(kuò)展的使用在上述聲明中,$link表示通過mysqli_connect()函數(shù)獲取的數(shù)據(jù)庫連接,$query表示SQL語句。當(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語句后,返回的是一個(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江省寧波市鎮(zhèn)海區(qū)立人中學(xué)2019-2020學(xué)年八年級(jí)下學(xué)期期中物理試題【含答案、解析】
- 數(shù)據(jù)結(jié)構(gòu)試題庫及答案
- 2025年滬科新版二年級(jí)語文下冊(cè)月考試卷
- 2025年滬教新版選修1生物上冊(cè)月考試卷含答案
- 2025年滬教版八年級(jí)歷史上冊(cè)月考試卷含答案
- 2025年粵教滬科版選修6歷史上冊(cè)月考試卷
- 2025年度企業(yè)催告函模板制作合同3篇
- 個(gè)人與個(gè)人之間2024年度專利許可合同3篇
- 二零二五農(nóng)機(jī)零部件進(jìn)口代理合同3篇
- 抵押物合同(2篇)
- 2025-2030年中國陶瓷電容器行業(yè)運(yùn)營狀況與發(fā)展前景分析報(bào)告
- 2025年山西國際能源集團(tuán)限公司所屬企業(yè)招聘43人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 二零二五年倉儲(chǔ)配送中心物業(yè)管理與優(yōu)化升級(jí)合同3篇
- 2025屆廈門高三1月質(zhì)檢期末聯(lián)考數(shù)學(xué)答案
- 音樂作品錄制許可
- 江蘇省無錫市2023-2024學(xué)年高三上學(xué)期期終教學(xué)質(zhì)量調(diào)研測(cè)試語文試題(解析版)
- 拉薩市2025屆高三第一次聯(lián)考(一模)英語試卷(含答案解析)
- 開題報(bào)告:AIGC背景下大學(xué)英語教學(xué)設(shè)計(jì)重構(gòu)研究
- 師德標(biāo)兵先進(jìn)事跡材料師德標(biāo)兵個(gè)人主要事跡
- 連鎖商務(wù)酒店述職報(bào)告
- 2024年山東省煙臺(tái)市初中學(xué)業(yè)水平考試地理試卷含答案
評(píng)論
0/150
提交評(píng)論