首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

使用表單提交 SQL 資料(三):動態建構 INSERT 陳述式的函數實作

     編輯:關於SqlServer

動態產生 INSERT SQL 的伺服器端函數

以下 ASP/VBScript 函數示範如何根據表單提交欄位,自動建構 INSERT 陳述式:

<%
Function buildSQLInsert(targetTable, omitFields)
    Dim iStr, vStr, nStr, x, fieldName, fieldData
    iStr = "INSERT INTO " & targetTable & " "
    vStr = "VALUES ("
    nStr = "("
    
    For Each x In Request.Form
        fieldName = UCase(x)
        ' 檢查是否為略過欄位
        If InStr(UCase(omitFields), x) = 0 Then
            ' 單引號逸出防止 SQL 注入
            fieldData = Replace(Request.Form(fieldName), "'", "''")
            nStr = nStr & "[" & fieldName & "],"
            vStr = vStr & "'" & fieldData & "',"
        End If
    Next
    
    ' 移除尾端逗號並閉合
    If Right(nStr, 1) = "," Then nStr = Left(nStr, Len(nStr)-1)
    If Right(vStr, 1) = "," Then vStr = Left(vStr, Len(vStr)-1)
    
    nStr = nStr & ")"
    vStr = vStr & ")"
    
    buildSQLInsert = iStr & nStr & " " & vStr
End Function
%>

關鍵設計要點

  • 參數化設計:targetTable 指定目標表,omitFields 以逗號分隔需排除欄位(如自動編號、時間戳記)。
  • 欄位名大寫正規化:使用 UCase 統一比對,避免大小寫差異。
  • 單引號逸出:Replace(..., "'", "''") 防止 SQL 注入與語法錯誤。
  • 動態欄位清單:僅包含表單實際提交且未排除的欄位,彈性應對不同表單。

使用範例

<%
Dim sqlStr
sqlStr = buildSQLInsert("Users", "UserID,CreateDate")
' 執行 sqlStr ...
%>

注意:實務建議改用參數化查詢(Command.Parameters)或 ORM 框架,進一步強化安全性與維護性。

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