這篇文章主要介紹“PHP和MySQL有哪些開發(fā)技巧”,在日常操作中,相信很多人在PHP和MySQL有哪些開發(fā)技巧問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PHP和MySQL有哪些開發(fā)技巧”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
鄒城網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站建設等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司于2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選創(chuàng)新互聯(lián)公司。PHP和MySQL開發(fā)有哪些技巧
1.PHP中數(shù)組的使用
在操作數(shù)據(jù)庫時,使用關聯(lián)數(shù)組(associatively-indexedarrays)十分有幫助,下面我們看一個基本的數(shù)字格式的數(shù)組遍歷:
$temp[0]="richmond";
$temp[1]="tigers";
$temp[2]="premiers";
for($x=0;$x
{
echo$temp[$x];
echo"";
}
?>
然而另外一種更加節(jié)省代碼的方式是:
$temp=array("richmond","tigers","premiers");
foreach($tempas$element)
echo"$element";
?>
foreach還能輸出文字下標:
$temp=array("club"=>"richmond",
"nickname"=>"tigers",
"aim"=>"premiers");
foreach($tempas$key=>$value)
echo"$key:$value";
?>
PHP手冊中描述了大約50個用于處理數(shù)組的函數(shù)。
2.在PHP字符串中加入變量
這個很簡單的:
$temp="hello"
echo"$tempworld";
?>
但是需要說明的是,盡管下面的例子沒有錯誤:
$temp=array("one"=>1,"two"=>2);
//輸出::Thefirstelementis1
echo"Thefirstelementis$temp[one].";
?>
但是如果后面那個echo語句沒有雙引號引起來的話,就要報錯,因此建議使用花括號:
$temp=array("one"=>1,"two"=>2);
echo"Thefirstelementis{$temp["one"]}.";
?>
3.采用關聯(lián)數(shù)組存取查詢結(jié)果
看下面的例子:
$connection=mysql_connect("localhost","albert","shhh");
mysql_select_db("winestore",$connection);
$result=mysql_query("SELECTcust_id,surname,
firstnameFROMcustomer",$connection);
while($row=mysql_fetch_array($result))
{
echo"ID:\t{$row["cust_id"]}\n";
echo"Surname\t{$row["surname"]}\n";
echo"Firstname:\t{$row["firstname"]}\n\n";
}
?>
函數(shù)mysql_fetch_array()把查詢結(jié)果的一行放入數(shù)組,可以同時用兩種方式引用,例如cust_id可以同時用下面兩種方式:$row["cust_id"]或者$row[0]。顯然,前者的可讀性要比后者好多了。
在多表連查中,如果兩個列名字一樣,好用別名分開:
SELECTwinery.nameASwname,
region.nameASrname,
FROMwinery,region
WHEREwinery.region_id=region.region_id;
列名的引用為:$row["wname"]和$row["rname"]。
在指定表名和列名的情況下,只引用列名:
SELECTwinery.region_id
FROMwinery
列名的引用為:$row["region_id"]。
聚集函數(shù)的引用就是引用名:
SELECTcount(*)
FROMcustomer;
列名的引用為:$row["count(*)"]。
4.注意常見的PHPbug
常見的PHP糾錯問題是:
NopagerenderedbytheWebbrowserwhenmuchmoreisexpected
Apop-updialogstatingthatthe"DocumentContainsNoData"
Apartialpagewhenmoreisexpected
出現(xiàn)這些情況的大多數(shù)原因并不在于腳本的邏輯,而是HTML中存在的bug或者腳本生成的HTML的bug。例如缺少類似,,之類的關閉Tag,頁面就不能刷新。解決這個問題的辦法就是,查看HTML的源代碼。
對于復雜的,不能查到原因的頁面,可以通過W3C的頁面校驗程序http://validator.w3.org/來分析。
如果沒有定義變量,或者變量定義錯誤也會讓程序變得古怪。例如下面的死循環(huán):
for($counter=0;$counter<10;$counter++)>
變量$Counter在增加,而$counter永遠小于10。這類錯誤一般都能通過設置較高的錯誤報告級別來找到:
error_reporting(E_ALL);
for($counter=0;$counter<10;$counter++)>
PHP和MySQL開發(fā)有哪些技巧
5.采用header()函數(shù)處理單部件查詢
在很多Web數(shù)據(jù)庫應用中,一些功能往往讓用戶點擊一個連接后,繼續(xù)停留在當前頁面,這樣的工作我叫它“單部件查詢”。
下面是一個叫做calling.php的腳本:
"-//W3C//DTDHTML4.0Transitional//EN"
"/tupian/20230522/pp Clickhere!
當用戶點擊上面的連接時,就去調(diào)用action.php。下面是action.php的源碼:
//數(shù)據(jù)庫功能
//重定向
header("Location:$HTTP_REFERER");
exit;
?>
這里有兩個常見的錯誤需要提醒一下:
調(diào)用header()函數(shù)后要包含一個exit語句讓腳本停止,否則后續(xù)的腳本可能會在頭發(fā)送前輸出。
header()函數(shù)常見的一個錯誤是:
Warning:Cannotaddheaderinformation-headersalreadysent...
header()函數(shù)只能在HTML輸出之前被調(diào)用,因此你需要檢查php前面可能存在的空行,空格等等。
6.reload的問題及其解決
我以前在寫PHP程序時,經(jīng)常碰到頁面刷新時,數(shù)據(jù)庫多處理一次的情況。
我們來看addcust.php:
$query="INSERTINTOcustomer
SETsurname=$surname,
firstname=$firstname";
$connection=mysql_connect("localhost","fred","shhh");
mysql_select_db("winestore",$connection);
$result=mysql_query($query,$connection);
?>
"-//W3C//DTDHTML4.0Transitional//EN"
"/tupian/20230522/pp I'veinsertedthecustomerforyou.
?>
假設我們用下面的連接使用這個程序:
http://www.freelamp.com/addcust.php?surname=Smith&firstname=Fred
如果這個請求只提交一次,OK,不會有問題,但是如果多次刷新,你就會有多條記錄插入。
這個問題可以通過header()函數(shù)解決:下面是新版本的addcust.php:
$query="INSERTINTOcustomer
SETsurname=$surname,
firstname=$firstname";
$connection=mysql_connect("localhost","fred","shhh");
mysql_select_db("winestore",$connection);
$result=mysql_query($query,$connection);
header("Location:cust_receipt.php");
?>
這個腳本把瀏覽器重定向到一個新的頁面:cust_receipt.php:
"-//W3C//DTDHTML4.0Transitional//EN"
"/tupian/20230522/pp I'veinsertedthecustomerforyou.
這樣,原來的頁面繼續(xù)刷新也沒有副作用了。
7.巧用鎖機制來提高應用性能
如果我們要緊急運行一個報表,那么,我們可以對表加寫鎖,防治別人讀寫,來提高對這個表的處理速度。
8.用mysql_unbuffered_query()開發(fā)快速的腳本
這個函數(shù)能用來替換mysql_query()函數(shù),主要的區(qū)別就是mysql_unbuffered_query()執(zhí)行完查詢后馬上返回,不需要等待或者對數(shù)據(jù)庫加鎖。
但是返回的行數(shù)不能用mysql_num_rows()函數(shù)來檢查,因為輸出的結(jié)果集大小未知。
到此,關于“PHP和MySQL有哪些開發(fā)技巧”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
網(wǎng)站題目:PHP和MySQL有哪些開發(fā)技巧-創(chuàng)新互聯(lián)
標題鏈接:http://weahome.cn/article/desjjs.html