以下 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 框架,進一步強化安全性與維護性。