首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 處理大量表單欄位技巧:陣列命名與動態 SQL 建構

     編輯:PHP 綜合知識

針對欄位超過 20 個的大型表單,採用陣列命名法 name="setting[key]" 搭配白名單驗證,動態建構 INSERT/UPDATE SQL,大幅簡化程式碼。

前端表單命名

<input type="text" name="setting[a]">
<input type="text" name="setting[b]">
...
<input type="text" name="setting[z]">

後端處理邏輯

$fields = ['a','b',...,'z']; // 白名單字典
$setting = $_POST['setting']; // 自動獲得關聯陣列

// INSERT 動態建構
$sqlk = $sqlv = '';
foreach ($setting as $k => $v) {
    if (in_array($k, $fields)) {
        $sqlk .= ','.$k;
        $sqlv .= ",'$v'";
    }
}
$sqlk = substr($sqlk, 1);
$sqlv = substr($sqlv, 1);
$sql = "INSERT INTO kele_table ($sqlk) VALUES ($sqlv)";

// UPDATE 動態建構
$sql = '';
foreach ($setting as $k => $v) {
    if (in_array($k, $fields)) $sql .= ",$k='$v'";
}
$sql = substr($sql, 1);
$sql = "UPDATE kele_table SET $sql WHERE id=$id";

優點總結

  • 欄位增減只需修改 $fields 白名單,不動 SQL 邏輯
  • 避免手寫超長 SQL 字串,減少拼接錯誤
  • 白名單機制防止大量賦值漏洞
  • 程式碼行數從 O(n) 降為 O(1) 維護成本

安全性強化建議

  • **必須使用預處理語句**,上述字串拼接僅示範邏輯
  • 數值型欄位驗證 is_numeric(),字串型 mysqli_real_escape_string()
  • 考慮使用 ORM 或 Query Builder 完全避免手寫 SQL
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved