我遇到了一些問題,我的ColdFusion代碼, 我有一個簡單的表單,我所要做的就是將值添加到數據庫。我不斷收到錯誤: 「錯誤代碼206 [Macromedia公司] [SQLServer的JDBC驅動程序] [SQLServer的]操作數類型衝突:INT與文字不兼容」ColdFusion表單不提交數據到數據庫
這裏是我的代碼:
<div class="form">
<form method="post" name="color">
ID:
<input type="text" name="id" id="id">
Color Name:
<input type="text" name="color" id="color">
Hex Value:
<input type="text" name="hex" id="hex">
<input type="submit" value="Submit">
</form>
</div>
<div>
<cfif structKeyExists(form, "color")>
<cfquery datasource="bentest" name="insertColor">
USE [benTest]
INSERT INTO color_codes
(id ,color, hexvalue)
VALUES
(#form.id#, '#form.color#', #form.hex#)
</cfquery>
<p>You've added a color to the database!</p>
</cfif>
</div>
如果我刪除#form.color#中的單引號,我得到「無效的列名稱(我輸入的內容)'。」
絕對在所有變量查詢參數上使用cfqueryparam。那麼你不需要擔心數據類型轉換或應該或不應該引用哪些值。此外,它對於像SQL Server這樣的數據庫尤其重要,因爲它們支持執行多個語句,即易受sql注入影響。使用cfqueryparam意味着你正在使用[bind variables](https://en.wikipedia.org/wiki/Bind_variable),它帶來了各種各樣的好處,其中最重要的就是sql注入保護。 – Leigh
謝謝!其他一些人提到了cfqueryparam,但我不確定如何使用它。這對我來說很有意義!謝謝! – Benjadock
我用cfqueryparam替換了它們,它完美地工作,謝謝@Jedihomer Townend&@Leigh! – Benjadock