我的ColdFusion代码遇到了一些问题, 我有一个简单的表单,我想要它做的就是将值添加到数据库中。我一直收到错误: "错误代码206 [Macromedia] [SQLServer JDBC驱动程序] [SQLServer]操作数类型冲突:int与文本"
不兼容这是我的代码:
<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#中删除单引号,我会得到&#34;无效的列名&#39;(我输入的内容)&#39;。&#34;
答案 0 :(得分:8)
如果数据库中的十六进制字段是文本字段,例如nvarchar,varchar,text,那么至少你需要围绕变量的引号......即
<cfquery datasource="bentest" name="insertColor">
USE [benTest]
INSERT INTO color_codes (id ,color, hexvalue)
VALUES (#form.id#, '#form.color#', '#form.hex#')
</cfquery>
但是我强烈建议你们也使用cfqueryparam,即
<cfquery datasource="bentest" name="insertColor">
USE [benTest]
insert into
[color_codes] (
[Id],
[Color],
[HexValue]
)
values (
<cfqueryparam value="#Form.Id#" cfquerytype="cf_sql_integer">,
<cfqueryparam value="#Form.Color#" cfquerytype="cf_sql_varchar">,
<cfqueryparam value="#Form.Hex#" cfquerytype="cf_sql_varchar">
)
</cfquery>
答案 1 :(得分:1)
您需要为#form.hex#
添加引号,因为它是字符串值,而不是整数:
INSERT INTO color_codes
(id ,color, hexvalue)
VALUES
(#form.id#, '#form.color#', '#form.hex#')
实际上,看起来你的id也是一个文本字段。这是在数据库中设置的方式吗?您没有进行任何验证该值是数字....通常ID是一个自动递增字段,并且在插入时根本不由用户提供。