版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PHP編程語(yǔ)言入門實(shí)戰(zhàn)指南TOC\o"1-2"\h\u24895第1章PHP基礎(chǔ)入門 3302351.1PHP簡(jiǎn)介與安裝 3255201.2PHP語(yǔ)法基礎(chǔ) 3119421.3變量與常量 425761.4數(shù)據(jù)類型 47329第2章PHP流程控制 5106082.1條件語(yǔ)句 5237292.1.1if語(yǔ)句 5782.1.2switch語(yǔ)句 5158782.2循環(huán)語(yǔ)句 6105312.2.1for循環(huán) 6248822.2.2while循環(huán) 6231102.2.3dowhile循環(huán) 789462.3函數(shù) 79762第3章PHP數(shù)組與字符串 8230793.1數(shù)組操作 8178653.1.1創(chuàng)建數(shù)組 8272663.1.2訪問(wèn)數(shù)組元素 824083.1.3修改數(shù)組元素 8311603.1.4遍歷數(shù)組 895203.1.5數(shù)組排序 8172133.1.6數(shù)組函數(shù) 917083.2字符串操作 999313.2.1創(chuàng)建字符串 9321563.2.2字符串連接 9123623.2.3字符串長(zhǎng)度 973733.2.4字符串截取 1030273.2.5字符串替換 1067873.2.6字符串函數(shù) 10120003.3正則表達(dá)式 10300673.3.1正則表達(dá)式基礎(chǔ) 1020243.3.2preg_match() 1026643.3.3preg_match_all() 11204773.3.4preg_replace() 11266123.3.5正則表達(dá)式函數(shù) 1113853第4章PHP文件與目錄操作 11227614.1文件系統(tǒng)基礎(chǔ) 1167474.2文件操作 1290764.3目錄操作 1232526第5章PHP表單處理與驗(yàn)證 12107515.1表單提交與接收 12185925.1.1表單基本結(jié)構(gòu) 13174895.1.2接收表單數(shù)據(jù) 13268085.2表單驗(yàn)證 1367865.2.1基本驗(yàn)證 13142925.2.2正則表達(dá)式驗(yàn)證 14227185.3文件 1462865.3.1文件表單 1425395.3.2接收文件 156681第6章PHP會(huì)話控制 1563176.1Cookie管理 15153056.1.1設(shè)置Cookie 16126386.1.2獲取Cookie 16167906.1.3刪除Cookie 16217476.2Session管理 16189436.2.1啟動(dòng)Session 16112406.2.2設(shè)置Session變量 1760696.2.3獲取Session變量 17249986.2.4刪除Session變量 17220076.2.5銷毀Session 1721509第7章PHP與數(shù)據(jù)庫(kù)操作 1752627.1MySQL基礎(chǔ) 17327147.1.1MySQL的安裝與配置 18247647.1.2SQL語(yǔ)言基礎(chǔ) 1867577.2PHP操作MySQL數(shù)據(jù)庫(kù) 18191077.2.1連接MySQL數(shù)據(jù)庫(kù) 1826057.2.2執(zhí)行SQL語(yǔ)句 19253287.3PDO擴(kuò)展 19148317.3.1PDO連接數(shù)據(jù)庫(kù) 20232457.3.2PDO操作數(shù)據(jù)庫(kù) 2027024第8章PHP面向?qū)ο缶幊?21998.1類與對(duì)象 21279118.1.1定義類 21257188.1.2創(chuàng)建對(duì)象 2151278.2繼承與多態(tài) 2266288.2.1繼承 2220608.2.2多態(tài) 22179298.3魔術(shù)方法與靜態(tài)成員 2370758.3.1魔術(shù)方法 23126318.3.2靜態(tài)成員 247461第9章PHP安全與異常處理 24168079.1安全防范措施 2441739.2錯(cuò)誤處理 25215129.3異常處理 253390第10章PHP實(shí)戰(zhàn)項(xiàng)目開(kāi)發(fā) 262306810.1項(xiàng)目需求分析 261458110.2數(shù)據(jù)庫(kù)設(shè)計(jì) 263257510.3系統(tǒng)架構(gòu)與模塊劃分 271082910.4項(xiàng)目實(shí)現(xiàn)與優(yōu)化 27第1章PHP基礎(chǔ)入門1.1PHP簡(jiǎn)介與安裝PHP(HypertextPreprocessor,超文本預(yù)處理器)是一種開(kāi)源的、服務(wù)器端的腳本語(yǔ)言,廣泛用于網(wǎng)頁(yè)開(kāi)發(fā),能夠嵌入HTML中使用。PHP的語(yǔ)法借鑒了C語(yǔ)言、Java和Perl等語(yǔ)言,易于學(xué)習(xí),功能強(qiáng)大。安裝PHP環(huán)境,通常有以下幾種方式:(1)使用集成包:如XAMPP、WAMP、MAMP等,這些集成包包含了Apache服務(wù)器、MySQL數(shù)據(jù)庫(kù)和PHP解釋器等,一鍵安裝,方便快捷。(2)手動(dòng)安裝:在Linux環(huán)境下,可以通過(guò)源碼編譯安裝,或者使用包管理器(如yum、aptget等)進(jìn)行安裝。(3)使用容器技術(shù):如Docker,通過(guò)拉取官方PHP鏡像,快速搭建PHP開(kāi)發(fā)環(huán)境。1.2PHP語(yǔ)法基礎(chǔ)PHP腳本通常以`<?php`標(biāo)簽開(kāi)始,以`?>`標(biāo)簽結(jié)束。在HTML文件中嵌入PHP代碼,如下所示:php<!DOCTYPE><head>PHP示例</></head><body><?phpecho"Hello,World!";?></body></>PHP語(yǔ)句通常以分號(hào)(;)結(jié)束,注釋可以使用`//`或``進(jìn)行單行注釋,使用`//`進(jìn)行多行注釋。1.3變量與常量變量是用于存儲(chǔ)數(shù)據(jù)的容器,PHP中的變量以美元符號(hào)($)開(kāi)頭。變量名是區(qū)分大小寫的,例如:php$txt="Hello";$Text="World";echo$txt."".$Text;//輸出:HelloWorld常量用于存儲(chǔ)在腳本執(zhí)行過(guò)程中不會(huì)改變的數(shù)據(jù)。使用`define()`函數(shù)定義常量,如下:phpdefine("GREETING","WeletoPHP!");echoGREETING;//輸出:WeletoPHP!1.4數(shù)據(jù)類型PHP支持以下數(shù)據(jù)類型:(1)整型(Integer):表示整數(shù),如`1`,`1`,`0`等。(2)浮點(diǎn)型(Float):表示帶有小數(shù)的數(shù)值,如`1.2`,`1.5`等。(3)字符串(String):表示文本數(shù)據(jù),可以用單引號(hào)(')或雙引號(hào)(")包裹。(4)布爾型(Boolean):表示真(true)或假(false)。(5)數(shù)組(Array):表示存儲(chǔ)多個(gè)數(shù)據(jù)的集合。(6)對(duì)象(Object):表示類的實(shí)例。(7)資源(Resource):表示外部資源的引用,如數(shù)據(jù)庫(kù)連接、文件句柄等。(8)NULL:表示沒(méi)有值。示例:php$int=1;//整型$float=1.2;//浮點(diǎn)型$string="Hello,PHP!";//字符串$bool=true;//布爾型,真$array=array(1,2,3);//數(shù)組第2章PHP流程控制本章將介紹PHP中的流程控制語(yǔ)句,包括條件語(yǔ)句和循環(huán)語(yǔ)句,以及如何在PHP中定義和調(diào)用函數(shù)。2.1條件語(yǔ)句條件語(yǔ)句允許程序根據(jù)不同的條件執(zhí)行不同的代碼塊。PHP提供了幾種條件語(yǔ)句,其中最常用的是if語(yǔ)句和switch語(yǔ)句。2.1.1if語(yǔ)句if語(yǔ)句是最基本的條件語(yǔ)句,用于根據(jù)條件的真假執(zhí)行不同的代碼塊。php<?php$a=10;if($a>10){echo"a大于10";}elseif($a==10){echo"a等于10";}else{echo"a小于10";}?>2.1.2switch語(yǔ)句switch語(yǔ)句用于根據(jù)不同的情況執(zhí)行不同的代碼塊,它適用于多條件判斷。php<?php$a=2;switch($a){case1:echo"a等于1";break;case2:echo"a等于2";break;default:echo"a不等于1或2";}?>2.2循環(huán)語(yǔ)句循環(huán)語(yǔ)句允許重復(fù)執(zhí)行一段代碼,直到指定的條件不再滿足為止。PHP提供了for循環(huán)、while循環(huán)和dowhile循環(huán)。2.2.1for循環(huán)for循環(huán)在給定的條件滿足時(shí)重復(fù)執(zhí)行代碼塊。php<?phpfor($i=0;$i<10;$i){echo$i;echo"\n";}?>2.2.2while循環(huán)while循環(huán)在指定條件為真時(shí)重復(fù)執(zhí)行代碼塊。php<?php$i=0;while($i<10){echo$i;echo"\n";$i;}?>2.2.3dowhile循環(huán)dowhile循環(huán)至少執(zhí)行一次代碼塊,然后檢查條件是否滿足,如果滿足,則繼續(xù)執(zhí)行。php<?php$i=0;do{echo$i;echo"\n";$i;}while($i<10);?>2.3函數(shù)函數(shù)是一段可以重復(fù)調(diào)用的代碼塊,它能夠接受參數(shù),執(zhí)行任務(wù),并可選地返回值。php<?phpfunctionsayHello($name){echo"Hello,".$name;}sayHello("John");//輸出"Hello,John"?>通過(guò)定義函數(shù),我們可以提高代碼的復(fù)用性和可維護(hù)性。在PHP編程中,合理地使用函數(shù)是編寫高效程序的關(guān)鍵。第3章PHP數(shù)組與字符串3.1數(shù)組操作在PHP中,數(shù)組是一種非常強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)。本章將介紹如何在PHP中進(jìn)行數(shù)組的操作。3.1.1創(chuàng)建數(shù)組創(chuàng)建數(shù)組可以使用多種方式,如直接賦值、array()函數(shù)、range()函數(shù)等。例子:php$arr1=array('apple','banana','orange');$arr2=['apple','banana','orange'];$arr3=range(1,10);3.1.2訪問(wèn)數(shù)組元素可以通過(guò)索引來(lái)訪問(wèn)數(shù)組中的元素。例子:phpecho$arr1[0];//輸出:apple3.1.3修改數(shù)組元素可以通過(guò)重新賦值來(lái)修改數(shù)組中的元素。例子:php$arr1[0]='grape';3.1.4遍歷數(shù)組可以使用for、foreach等循環(huán)結(jié)構(gòu)來(lái)遍歷數(shù)組。例子:phpforeach($arr1as$value){echo$value.PHP_EOL;}3.1.5數(shù)組排序PHP提供了多種排序函數(shù),如sort()、asort()、ksort()等。例子:phpsort($arr1);3.1.6數(shù)組函數(shù)PHP提供了一系列數(shù)組處理函數(shù),如array_push()、array_pop()、array_shift()等。例子:phparray_push($arr1,'mango');3.2字符串操作字符串是編程中常用的數(shù)據(jù)類型之一。本章將介紹如何在PHP中進(jìn)行字符串操作。3.2.1創(chuàng)建字符串創(chuàng)建字符串可以直接使用單引號(hào)、雙引號(hào)或定界符。例子:php$str1='Hello,world!';$str2="Hello,world!";$str3=<<<EOFHello,world!EOF;3.2.2字符串連接使用點(diǎn)(.)運(yùn)算符可以連接兩個(gè)或多個(gè)字符串。例子:php$str4=$str1.''.$str2;3.2.3字符串長(zhǎng)度使用strlen()函數(shù)可以獲取字符串的長(zhǎng)度。例子:phpechostrlen($str1);//輸出:133.2.4字符串截取使用substr()函數(shù)可以截取字符串的一部分。例子:phpechosubstr($str1,0,5);//輸出:Hello3.2.5字符串替換使用str_replace()函數(shù)可以在字符串中進(jìn)行搜索和替換。例子:phpechostr_replace('world','PHP',$str1);//輸出:Hello,PHP!3.2.6字符串函數(shù)PHP提供了一系列字符串處理函數(shù),如strtoupper()、strtolower()、strpos()等。例子:phpechostrtoupper($str1);//輸出:HELLO,WORLD!3.3正則表達(dá)式正則表達(dá)式是用于處理字符串的強(qiáng)大工具。本章將介紹PHP中的正則表達(dá)式相關(guān)操作。3.3.1正則表達(dá)式基礎(chǔ)正則表達(dá)式由普通字符、元字符和量詞組成。例子:php$pattern='/world/';3.3.2preg_match()使用preg_match()函數(shù)可以檢查字符串是否匹配正則表達(dá)式。例子:phpif(preg_match($pattern,$str1)){echo'匹配成功';}3.3.3preg_match_all()使用preg_match_all()函數(shù)可以獲取字符串中所有匹配正則表達(dá)式的部分。例子:phppreg_match_all($pattern,$str1,$matches);print_r($matches);3.3.4preg_replace()使用preg_replace()函數(shù)可以在字符串中進(jìn)行正則表達(dá)式替換。例子:phpechopreg_replace($pattern,'PHP',$str1);//輸出:Hello,PHP!3.3.5正則表達(dá)式函數(shù)PHP提供了一系列正則表達(dá)式處理函數(shù),如preg_split()、preg_grep()等。例子:php$arr=preg_split($pattern,$str1);print_r($arr);第4章PHP文件與目錄操作4.1文件系統(tǒng)基礎(chǔ)在PHP中,文件系統(tǒng)操作是開(kāi)發(fā)過(guò)程中不可或缺的一部分。本章將介紹如何使用PHP進(jìn)行文件和目錄的基本操作。我們需要了解文件系統(tǒng)的幾個(gè)基本概念,如文件路徑、文件權(quán)限和文件類型。文件路徑:PHP中,文件路徑可以是相對(duì)路徑或絕對(duì)路徑。相對(duì)路徑是相對(duì)于當(dāng)前工作目錄的路徑,而絕對(duì)路徑是從根目錄開(kāi)始的完整路徑。文件權(quán)限:在Unix類操作系統(tǒng)中,文件權(quán)限決定了誰(shuí)能讀取、寫入或執(zhí)行文件。PHP提供了修改文件權(quán)限的函數(shù)。文件類型:PHP可以判斷文件的類型,如普通文件、目錄、等。4.2文件操作文件操作包括創(chuàng)建、讀取、寫入和刪除文件等。文件打開(kāi)與關(guān)閉:使用`fopen()`函數(shù)打開(kāi)文件,通過(guò)`fclose()`函數(shù)關(guān)閉文件。文件讀?。菏褂胉fgets()`、`fread()`、`file_get_contents()`等函數(shù)讀取文件內(nèi)容。文件寫入:使用`fwrite()`、`file_put_contents()`等函數(shù)向文件中寫入數(shù)據(jù)。文件指針操作:通過(guò)`ftell()`、`fseek()`、`rewind()`等函數(shù)操作文件指針。文件鎖定:使用`flock()`函數(shù)對(duì)文件進(jìn)行鎖定,以避免多個(gè)進(jìn)程同時(shí)操作同一文件。文件:通過(guò)`$_FILES`數(shù)組處理表單的文件。4.3目錄操作目錄操作包括創(chuàng)建、讀取、刪除和更改目錄等。創(chuàng)建目錄:使用`mkdir()`函數(shù)創(chuàng)建目錄。讀取目錄:使用`opendir()`、`readdir()`、`scandir()`等函數(shù)遍歷目錄內(nèi)容。刪除目錄:使用`rmdir()`函數(shù)刪除空目錄,`unlink()`函數(shù)刪除目錄中的文件。更改目錄:使用`chdir()`函數(shù)更改當(dāng)前工作目錄,`rename()`函數(shù)重命名目錄。檢查目錄是否存在:使用`file_exists()`函數(shù)檢查目錄是否存在。第5章PHP表單處理與驗(yàn)證5.1表單提交與接收在Web開(kāi)發(fā)中,表單是用戶與網(wǎng)站進(jìn)行交互的重要手段。PHP作為一種服務(wù)器端腳本語(yǔ)言,具有強(qiáng)大的表單處理能力。本節(jié)將介紹如何使用PHP接收并處理表單數(shù)據(jù)。5.1.1表單基本結(jié)構(gòu)HTML表單通常由`<form>`標(biāo)簽定義,包含一個(gè)或多個(gè)表單元素,如表單輸入框、單選按鈕、復(fù)選框、下拉列表等。以下是一個(gè)簡(jiǎn)單的表單示例:<formaction="process.php"method="post"><labelfor="username">用戶名:</label><inputtype="text"name="username"id="username"/><inputtype="submit"value="提交"/></form>其中,`action`屬性指定了表單提交后處理的PHP文件,`method`屬性指定了表單提交的方式,可以是`GET`或`POST`。5.1.2接收表單數(shù)據(jù)在PHP中,可以通過(guò)`$_POST`或`$_GET`全局變量來(lái)獲取表單提交的數(shù)據(jù)。以下是一個(gè)簡(jiǎn)單的示例:php<?php//process.php$username=$_POST['username'];echo'用戶名:'.$username;?>5.2表單驗(yàn)證為了保證數(shù)據(jù)的正確性和安全性,對(duì)表單數(shù)據(jù)進(jìn)行驗(yàn)證是必要的。本節(jié)將介紹如何進(jìn)行表單驗(yàn)證。5.2.1基本驗(yàn)證基本驗(yàn)證包括檢查數(shù)據(jù)是否為空、長(zhǎng)度是否符合要求、格式是否正確等。以下是一個(gè)簡(jiǎn)單的表單驗(yàn)證示例:php<?php//process.php$username=$_POST['username'];if(empty($username)){die('用戶名不能為空');}if(strlen($username)<4){die('用戶名長(zhǎng)度不能少于4個(gè)字符');}//其他驗(yàn)證邏輯?>5.2.2正則表達(dá)式驗(yàn)證正則表達(dá)式是進(jìn)行復(fù)雜驗(yàn)證的強(qiáng)大工具。在PHP中,可以使用`preg_match`函數(shù)進(jìn)行正則表達(dá)式匹配。php<?php//process.php$e=$_POST['e'];if(!preg_match('/^[azAZ(9)_%][azAZ(9)]\.[azAZ]{2,}$/',$e)){die('郵箱格式不正確');}?>5.3文件文件是Web應(yīng)用中常見(jiàn)的功能,例如用戶頭像、附件等。本節(jié)將介紹如何使用PHP處理文件。5.3.1文件表單要實(shí)現(xiàn)文件,需要在表單中添加一個(gè)`<inputtype="file">`元素,并設(shè)置`enctype="multipart/formdata"`屬性。<formaction="upload.php"method="post"enctype="multipart/formdata"><inputtype="file"name="file"/><inputtype="submit"value=""/></form>5.3.2接收文件在PHP中,通過(guò)`$_FILES`全局變量獲取的文件信息。以下是一個(gè)簡(jiǎn)單的文件處理示例:php<?php//upload.php$uploadFile=$_FILES['file'];if($uploadFile['error']!==UPLOAD_ERR_OK){die('文件失敗');}//檢查文件類型、大小等$allowedTypes=['image/jpeg','image/png'];if(!in_array($uploadFile['type'],$allowedTypes)){die('文件類型不允許');}//移動(dòng)文件到指定目錄$targetPath='uploads/'.$uploadFile['name'];if(!move_uploaded_file($uploadFile['tmp_name'],$targetPath)){die('文件移動(dòng)失敗');}echo'文件成功';?>注意:在實(shí)際開(kāi)發(fā)中,還需要對(duì)文件進(jìn)行更嚴(yán)格的驗(yàn)證和處理,以保證安全性。第6章PHP會(huì)話控制6.1Cookie管理在Web開(kāi)發(fā)中,會(huì)話控制是一種保持用戶狀態(tài)信息的技術(shù)。Cookie是實(shí)現(xiàn)會(huì)話控制的一種方式。本章將介紹如何在PHP中管理Cookie。6.1.1設(shè)置Cookie設(shè)置Cookie使用的是`setcookie()`函數(shù)。該函數(shù)必須在任何輸出被發(fā)送到瀏覽器之前調(diào)用。示例:phpsetcookie('username','John',time()3600);上述代碼創(chuàng)建了一個(gè)名為`username`的Cookie,值為`John`,有效期為1小時(shí)。6.1.2獲取Cookie在PHP中,Cookie自動(dòng)以全局?jǐn)?shù)組`$_COOKIE`的形式可用。示例:phpif(isset($_COOKIE['username'])){echo'歡迎,'.$_COOKIE['username'];}6.1.3刪除Cookie刪除Cookie只需將Cookie的過(guò)期時(shí)間設(shè)置為一個(gè)過(guò)去的時(shí)間戳。示例:phpsetcookie('username','',time()3600);6.2Session管理除了Cookie,PHP還提供了另一種會(huì)話控制機(jī)制——Session。Session允許在多個(gè)頁(yè)面請(qǐng)求之間保持?jǐn)?shù)據(jù)。6.2.1啟動(dòng)Session在使用Session之前,需要調(diào)用`session_start()`函數(shù)。示例:phpsession_start();6.2.2設(shè)置Session變量設(shè)置Session變量,只需將其添加到全局?jǐn)?shù)組`$_SESSION`中。示例:php$_SESSION['username']='John';6.2.3獲取Session變量Session變量在腳本執(zhí)行期間自動(dòng)可用。示例:phpif(isset($_SESSION['username'])){echo'歡迎,'.$_SESSION['username'];}6.2.4刪除Session變量刪除Session變量,可以使用`unset()`函數(shù)。示例:phpunset($_SESSION['username']);6.2.5銷毀Session銷毀整個(gè)Session,可以使用`session_destroy()`函數(shù)。示例:phpsession_destroy();注意:銷毀Session后,還需要清除可能已經(jīng)存儲(chǔ)的Cookie。phpsetcookie(session_name(),'',time()3600);第7章PHP與數(shù)據(jù)庫(kù)操作7.1MySQL基礎(chǔ)MySQL作為最流行的開(kāi)源關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),被廣泛地應(yīng)用于各類Web應(yīng)用中。掌握PHP與MySQL的操作,是進(jìn)行動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)的關(guān)鍵。本節(jié)將介紹MySQL的基礎(chǔ)知識(shí),為后續(xù)的PHP操作MySQL數(shù)據(jù)庫(kù)打下基礎(chǔ)。7.1.1MySQL的安裝與配置需要在服務(wù)器上安裝MySQL。具體安裝步驟請(qǐng)參考官方文檔或相應(yīng)教程。安裝完成后,需要對(duì)MySQL進(jìn)行基本配置,如設(shè)置root用戶密碼、創(chuàng)建數(shù)據(jù)庫(kù)等。7.1.2SQL語(yǔ)言基礎(chǔ)SQL(StructuredQueryLanguage,結(jié)構(gòu)化查詢語(yǔ)言)是操作關(guān)系型數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言。以下是一些基本的SQL命令:創(chuàng)建數(shù)據(jù)庫(kù):CREATEDATABASE數(shù)據(jù)庫(kù)名;刪除數(shù)據(jù)庫(kù):DROPDATABASE數(shù)據(jù)庫(kù)名;創(chuàng)建表:CREATETABLE表名(字段名1類型1,字段名2類型2,);刪除表:DROPTABLE表名;插入數(shù)據(jù):INSERTINTO表名(字段1,字段2,)VALUES(值1,值2,);查詢數(shù)據(jù):SELECT字段1,字段2,FROM表名WHERE條件;更新數(shù)據(jù):UPDATE表名SET字段1=值1,字段2=值2,WHERE條件;刪除數(shù)據(jù):DELETEFROM表名WHERE條件;7.2PHP操作MySQL數(shù)據(jù)庫(kù)PHP提供了多種方式與MySQL數(shù)據(jù)庫(kù)進(jìn)行交互,本節(jié)主要介紹使用mysqli擴(kuò)展進(jìn)行操作。7.2.1連接MySQL數(shù)據(jù)庫(kù)使用mysqli擴(kuò)展連接MySQL數(shù)據(jù)庫(kù)的示例代碼如下:php<?php$servername="localhost";$username="root";$password="密碼";$dbname="數(shù)據(jù)庫(kù)名";//創(chuàng)建連接$conn=newmysqli($servername,$username,$password,$dbname);//檢查連接if($conn>connect_error){die("連接失敗:".$conn>connect_error);}?>7.2.2執(zhí)行SQL語(yǔ)句連接到MySQL數(shù)據(jù)庫(kù)后,可以執(zhí)行SQL語(yǔ)句進(jìn)行增刪改查操作。查詢數(shù)據(jù):php$result=$conn>query("SELECTid,nameFROMusers");if($result>num_rows>0){//輸出每行數(shù)據(jù)while($row=$result>fetch_assoc()){echo"id:".$row["id"]."Name:".$row["name"]."<br>";}}else{echo"0結(jié)果";}插入數(shù)據(jù):php$sql="INSERTINTOusers(name,e)VALUES('John','johnexample.')";if($conn>query($sql)===TRUE){echo"新記錄插入成功";}else{echo"Error:".$sql."<br>".$conn>error;}7.3PDO擴(kuò)展PDO(PHPDataObjects)是PHP的數(shù)據(jù)庫(kù)抽象層,支持多種數(shù)據(jù)庫(kù)驅(qū)動(dòng),包括MySQL。使用PDO可以更加方便地操作數(shù)據(jù)庫(kù)。7.3.1PDO連接數(shù)據(jù)庫(kù)使用PDO連接MySQL數(shù)據(jù)庫(kù)的示例代碼如下:php<?php$servername="localhost";$username="root";$password="密碼";$dbname="數(shù)據(jù)庫(kù)名";try{$conn=newPDO("mysql:host=$servername;dbname=$dbname",$username,$password);//設(shè)置PDO錯(cuò)誤模式為異常$conn>setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);echo"連接成功";}catch(PDOException$e){echo"連接失敗:".$e>getMessage();}?>7.3.2PDO操作數(shù)據(jù)庫(kù)使用PDO執(zhí)行SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)操作的方法與mysqli類似。以下是一個(gè)查詢數(shù)據(jù)的示例:php$stmt=$conn>prepare("SELECTid,nameFROMusers");$stmt>execute();$result=$stmt>setFetchMode(PDO::FETCH_ASSOC);while($row=$stmt>fetch()){echo"id:".$row["id"]."Name:".$row["name"]."<br>";}通過(guò)本章的學(xué)習(xí),我們已經(jīng)掌握了PHP與MySQL數(shù)據(jù)庫(kù)操作的基本知識(shí),可以開(kāi)始進(jìn)行動(dòng)態(tài)網(wǎng)站的開(kāi)發(fā)。第8章PHP面向?qū)ο缶幊?.1類與對(duì)象面向?qū)ο缶幊蹋∣OP)是一種編程范式,它以對(duì)象為基礎(chǔ),將數(shù)據(jù)和操作數(shù)據(jù)的方法封裝在一起。在PHP中,類是創(chuàng)建對(duì)象的模板,對(duì)象則是類的實(shí)例。8.1.1定義類類是具有屬性和方法的抽象實(shí)體。屬性是類中的變量,而方法則是類中的函數(shù)。下面是一個(gè)簡(jiǎn)單的類定義示例:phpclassPerson{//屬性public$name;public$age;//方法publicfunctionsayHello(){echo"Hello,mynameis".$this>name."andIam".$this>age."yearsold.";}}8.1.2創(chuàng)建對(duì)象通過(guò)使用`new`關(guān)鍵字和類名,可以創(chuàng)建類的實(shí)例(對(duì)象)。如下示例:php//創(chuàng)建一個(gè)Person對(duì)象$person=newPerson();//設(shè)置屬性值$person>name="John";$person>age=25;//調(diào)用方法$person>sayHello();8.2繼承與多態(tài)繼承是面向?qū)ο缶幊讨械囊环N機(jī)制,允許子類繼承父類的屬性和方法,從而實(shí)現(xiàn)代碼的復(fù)用。8.2.1繼承在PHP中使用`extends`關(guān)鍵字來(lái)實(shí)現(xiàn)繼承。以下示例展示了如何創(chuàng)建一個(gè)子類并從父類繼承屬性和方法:phpclassEmployeeextendsPerson{//子類特有的屬性public$position;//子類特有的方法publicfunctiondoWork(){echo$this>name."isworkingasa".$this>position.".\n";}}$employee=newEmployee();$employee>name="Jane";$employee>age=30;$employee>position="Developer";$employee>sayHello();//繼承自Person類的方法$employee>doWork();//Employee類自己的方法8.2.2多態(tài)多態(tài)是指不同的類對(duì)象對(duì)同一消息作出響應(yīng)的能力。在PHP中,可以通過(guò)繼承和接口實(shí)現(xiàn)多態(tài)。以下示例展示了通過(guò)繼承實(shí)現(xiàn)的多態(tài):phpinterfaceVehicle{publicfunctionaccelerate();}classCarimplementsVehicle{publicfunctionaccelerate(){echo"Thecarisaccelerating.\n";}}classBikeimplementsVehicle{publicfunctionaccelerate(){echo"Thebikeisaccelerating.\n";}}functionmakeVehicleAccelerate(Vehicle$vehicle){$vehicle>accelerate();}$car=newCar();$bike=newBike();makeVehicleAccelerate($car);//輸出:Thecarisaccelerating.makeVehicleAccelerate($bike);//輸出:Thebikeisaccelerating.8.3魔術(shù)方法與靜態(tài)成員PHP中提供了一些特殊的“魔術(shù)方法”,它們?cè)谔囟ㄇ闆r下被自動(dòng)調(diào)用。還可以通過(guò)靜態(tài)成員在類之間共享數(shù)據(jù)。8.3.1魔術(shù)方法構(gòu)造函數(shù)和析構(gòu)函數(shù):`__construct()`和`__destruct()`方法重載:`__call()`和`__callStatic()`屬性重載:`__get()`,`__set()`,`__isset()`,`__unset()`以下是使用構(gòu)造函數(shù)和析構(gòu)函數(shù)的示例:phpclassSample{publicfunction__construct(){echo"__constructcalled.\n";}publicfunction__destruct(){echo"__destructcalled.\n";}}$sample=newSample();//輸出:__constructcalled.//當(dāng)對(duì)象被銷毀時(shí)(比如腳本執(zhí)行結(jié)束),會(huì)調(diào)用__destruct。8.3.2靜態(tài)成員靜態(tài)屬性和方法屬于類本身,而不是類的某個(gè)具體實(shí)例。靜態(tài)成員可以通過(guò)在屬性或方法前添加`static`關(guān)鍵字來(lái)定義。phpclassCounter{publicstatic$count=0;publicstaticfunctionincrement(){self::$count;}}Counter::increment();//增加靜態(tài)屬性$count的值echoCounter::$count;//輸出當(dāng)前值靜態(tài)方法可以不通過(guò)對(duì)象實(shí)例直接調(diào)用,通常用于訪問(wèn)靜態(tài)屬性或者實(shí)現(xiàn)工具類方法。第9章PHP安全與異常處理9.1安全防范措施在PHP編程中,安全性是的一個(gè)環(huán)節(jié)。為了保證應(yīng)用程序的安全,以下是一些基本的安全防范措施:使用預(yù)處理語(yǔ)句:為了防止SQL注入攻擊,應(yīng)使用預(yù)處理語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)操作。輸入驗(yàn)證:對(duì)所有用戶輸入進(jìn)行驗(yàn)證,保證輸入符合預(yù)期格式,可以使用filter_var()等函數(shù)進(jìn)行驗(yàn)證。轉(zhuǎn)義輸出:在輸出數(shù)據(jù)到HTML或數(shù)據(jù)庫(kù)時(shí),對(duì)特殊字符進(jìn)行轉(zhuǎn)義,避免XSS攻擊。使用:在涉及敏感信息的場(chǎng)景中,使用協(xié)議加密數(shù)據(jù)傳輸。文件安全:對(duì)文件進(jìn)行嚴(yán)格的限制,限制文件的類型、大小,并對(duì)文件進(jìn)行安全檢查。避免使用危險(xiǎn)函數(shù):避免使用易受攻擊的函數(shù),如eval()、system()等。防止目錄遍歷:保證應(yīng)用程序不會(huì)受到目錄遍歷攻擊,避免用戶訪問(wèn)未授權(quán)的文件或目錄。9.2錯(cuò)誤處理在PHP編程中,正確處理錯(cuò)誤可以提高程序的健壯性和用戶體驗(yàn)。以下是一些關(guān)于錯(cuò)誤處理的建議:錯(cuò)誤報(bào)告級(jí)別:合理設(shè)置error_reporting(),以便在開(kāi)發(fā)過(guò)程中報(bào)告必要的錯(cuò)誤,但在生產(chǎn)環(huán)境中應(yīng)盡量減少錯(cuò)誤輸出。錯(cuò)誤日志:將錯(cuò)誤記錄
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 創(chuàng)新型健身器械在學(xué)校健身房的營(yíng)銷應(yīng)用
- 2024-2025學(xué)年貴州省畢節(jié)市大方三聯(lián)實(shí)驗(yàn)學(xué)校三年級(jí)數(shù)學(xué)第一學(xué)期期末達(dá)標(biāo)檢測(cè)模擬試題含解析
- 2024年度金融理財(cái)預(yù)咨詢合同3篇
- 2025中國(guó)通號(hào)研究設(shè)計(jì)院集團(tuán)春季校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)移動(dòng)浙江公司春季校園招聘625人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)石油昆侖能源限公司秋季校招170人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)電信河北公司校園招聘147人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)煙草總公司合肥設(shè)計(jì)院校園招聘2人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)市政工程中南設(shè)計(jì)研究總院限公司春季校園招聘50人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年遼寧省質(zhì)量技術(shù)監(jiān)督局所屬事業(yè)單位招聘歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 固定資產(chǎn)情況表
- 超聲引導(dǎo)下腰方肌阻滯PPT
- 主蒸汽及再熱熱段管件技術(shù)協(xié)議-終版
- DB23∕T 2771-2020 黑龍江省城鎮(zhèn)供熱經(jīng)營(yíng)服務(wù)標(biāo)準(zhǔn)
- (完整PPT)半導(dǎo)體物理與器件物理課件
- 王守仁英國(guó)文學(xué)選讀課后答案
- 奧星-計(jì)算機(jī)化系統(tǒng)驗(yàn)證要點(diǎn)分析與校準(zhǔn)管理
- 《簡(jiǎn)·愛(ài)》-2022年中考一輪復(fù)習(xí)之必讀名著對(duì)比閱讀訓(xùn)練
- 新浙美版三年級(jí)上冊(cè)美術(shù)教案
- 中國(guó)國(guó)際商會(huì)入會(huì)申請(qǐng)表
- 裂隙燈顯微鏡的原理
評(píng)論
0/150
提交評(píng)論