首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

PHP 與 MySQL 開發實戰:8 個提升效率的核心技巧

     編輯:MySQL 資料庫相關知識

前言

本文整理自 O'Reilly Network 經典文章,針對 LAMP 架構下的 PHP + MySQL 開發,精選 8 個高頻實用技巧,助你寫出更簡潔、健壯的程式碼。

技巧 1:善用關聯陣列

傳統數字索引遍歷:

$temp = array("richmond", "tigers", "premiers");
for ($x = 0; $x < count($temp); $x++) {
    echo $temp[$x] . " ";
}

進階寫法:foreach 直接取值,更可輸出鍵名:

$temp = array("club" => "richmond", "nickname" => "tigers", "aim" => "premiers");
foreach ($temp as $key => $value) {
    echo "$key : $value ";
}

PHP 內建超過 50 個陣列處理函數,善用之可大幅減少樣板碼。

技巧 2:字串內嵌變數的最佳實踐

雙引號字串可直接解析變數:

$temp = "hello";
echo "$temp world";  // hello world

陣列元素嵌入時務必加花括號避免解析錯誤:

$arr = array("one" => 1);
echo "Value: {$arr['one']}";  // 正確
// echo "Value: $arr['one']";  // 錯誤

技巧 3:以關聯陣列存取查詢結果

mysql_fetch_array() 同時支援數字與關聯索引,建議統一使用關聯鍵名提升可讀性:

while ($row = mysql_fetch_array($result)) {
    echo "ID: {$row['cust_id']} ";
    echo "Surname: {$row['surname']} ";
}

多表聯查同名欄位務必用別名:

SELECT winery.name AS wname, region.name AS rname
FROM winery, region
WHERE winery.region_id = region.region_id;
// PHP 端引用:$row['wname'], $row['rname']

聚合函數結果直接用別名或函數名作為鍵:$row['count(*)']。

技巧 4:警惕常見 PHP Bug

  • 頁面空白/資料不全:多為 HTML 標籤未閉合(如缺少 ),用瀏覽器「檢視原始碼」或 W3C 驗證器排查。
  • 變數大小寫筆誤:$Counter++ vs $counter 導致無限迴圈。開啟 error_reporting(E_ALL); 可即時捕獲。

技巧 5:用 header() 處理單動作查詢

「單部件查詢」指使用者點擊連結執行動作後停留原頁。關鍵點:

// action.php
// 執行資料庫操作...
header("Location: $HTTP_REFERER");
exit;  // 必須加 exit,否則後續輸出會導致 headers already sent 錯誤

header() 必須在任何 HTML 輸出前呼叫,檢查前方空白行與 BOM。

技巧 6:解決重新整理重複提交

問題:使用者重新整理導致 INSERT 重複執行。
解法:Post-Redirect-Get (PRG) 模式

// addcust.php
mysql_query($query);
header("Location: cust_receipt.php");  // 導向純顯示頁
exit;

原頁面重新整理不再觸發寫入。

技巧 7:鎖機制提升報表效能

緊急報表執行前對表加寫鎖(LOCK TABLES tbl WRITE),阻塞其他讀寫,確保資料一致性與查詢速度,用畢立即 UNLOCK TABLES。

技巧 8:mysql_unbuffered_query() 打造高效腳本

替代 mysql_query(),查詢啟動後立即返回,不等待結果集全載入記憶體,適合大量資料串流處理。注意:無法使用 mysql_num_rows() 取得筆數。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved