91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP和MySQL有哪些開發技巧

發布時間:2021-08-11 23:14:59 來源:億速云 閱讀:126 作者:chen 欄目:編程語言

這篇文章主要介紹“PHP和MySQL有哪些開發技巧”,在日常操作中,相信很多人在PHP和MySQL有哪些開發技巧問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PHP和MySQL有哪些開發技巧”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

  PHP和MySQL開發有哪些技巧

  1.PHP中數組的使用

  在操作數據庫時,使用關聯數組(associatively-indexedarrays)十分有幫助,下面我們看一個基本的數字格式的數組遍歷:

  $temp[0]="richmond";

  $temp[1]="tigers";

  $temp[2]="premiers";

  for($x=0;$x

  {

  echo$temp[$x];

  echo"";

  }

  ?>

  然而另外一種更加節省代碼的方式是:

  $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個用于處理數組的函數。

  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.采用關聯數組存取查詢結果

  看下面的例子:

  $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";

  }

  ?>

  函數mysql_fetch_array()把查詢結果的一行放入數組,可以同時用兩種方式引用,例如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"]。

  聚集函數的引用就是引用名:

  SELECTcount(*)

  FROMcustomer;

  列名的引用為:$row["count(*)"]。

  4.注意常見的PHPbug

  常見的PHP糾錯問題是:

  NopagerenderedbytheWebbrowserwhenmuchmoreisexpected

  Apop-updialogstatingthatthe"DocumentContainsNoData"

  Apartialpagewhenmoreisexpected

  出現這些情況的大多數原因并不在于腳本的邏輯,而是HTML中存在的bug或者腳本生成的HTML的bug。例如缺少類似,,之類的關閉Tag,頁面就不能刷新。解決這個問題的辦法就是,查看HTML的源代碼。

  對于復雜的,不能查到原因的頁面,可以通過W3C的頁面校驗程序http://validator.w3.org/來分析。

  如果沒有定義變量,或者變量定義錯誤也會讓程序變得古怪。例如下面的死循環:

  for($counter=0;$counter<10;$counter++)>

  變量$Counter在增加,而$counter永遠小于10。這類錯誤一般都能通過設置較高的錯誤報告級別來找到:

  error_reporting(E_ALL);

  for($counter=0;$counter<10;$counter++)>

  PHP和MySQL開發有哪些技巧

  5.采用header()函數處理單部件查詢

  在很多Web數據庫應用中,一些功能往往讓用戶點擊一個連接后,繼續停留在當前頁面,這樣的工作我叫它“單部件查詢”。

  下面是一個叫做calling.php的腳本:

  "-//W3C//DTDHTML4.0Transitional//EN"

  "http://www.w3.org/TR/html4/loose.dtd">

  Clickhere!

  當用戶點擊上面的連接時,就去調用action.php。下面是action.php的源碼:

  //數據庫功能

  //重定向

  header("Location:$HTTP_REFERER");

  exit;

  ?>

  這里有兩個常見的錯誤需要提醒一下:

  調用header()函數后要包含一個exit語句讓腳本停止,否則后續的腳本可能會在頭發送前輸出。

  header()函數常見的一個錯誤是:

  Warning:Cannotaddheaderinformation-headersalreadysent...

  header()函數只能在HTML輸出之前被調用,因此你需要檢查php前面可能存在的空行,空格等等。

  6.reload的問題及其解決

  我以前在寫PHP程序時,經常碰到頁面刷新時,數據庫多處理一次的情況。

  我們來看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"

  "http://www.w3.org/TR/html4/loose.dtd">

  I'veinsertedthecustomerforyou.

  ?>

  假設我們用下面的連接使用這個程序:

  http://www.freelamp.com/addcust.php?surname=Smith&firstname=Fred

  如果這個請求只提交一次,OK,不會有問題,但是如果多次刷新,你就會有多條記錄插入。

  這個問題可以通過header()函數解決:下面是新版本的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"

  "http://www.w3.org/TR/html4/loose.dtd">

  I'veinsertedthecustomerforyou.

  這樣,原來的頁面繼續刷新也沒有副作用了。

  7.巧用鎖機制來提高應用性能

  如果我們要緊急運行一個報表,那么,我們可以對表加寫鎖,防治別人讀寫,來提高對這個表的處理速度。

  8.用mysql_unbuffered_query()開發快速的腳本

  這個函數能用來替換mysql_query()函數,主要的區別就是mysql_unbuffered_query()執行完查詢后馬上返回,不需要等待或者對數據庫加鎖。

  但是返回的行數不能用mysql_num_rows()函數來檢查,因為輸出的結果集大小未知。

到此,關于“PHP和MySQL有哪些開發技巧”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绩溪县| 太谷县| 长海县| 信丰县| 郧西县| 枣阳市| 高阳县| 建水县| 博白县| 太仆寺旗| 石泉县| 米林县| 北票市| 渭源县| 烟台市| 弥渡县| 姚安县| 永善县| 白城市| 武穴市| 宾川县| 沾益县| 宁远县| 潮安县| 嵊州市| 时尚| 井研县| 柞水县| 江口县| 衡山县| 光泽县| 二连浩特市| 茶陵县| 西丰县| 张家界市| 肥乡县| 龙泉市| 康马县| 托里县| 岱山县| 年辖:市辖区|