我的 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# 中删除单引号,我会得到“无效的列名称‘(我输入的内容)’。”
最佳答案
如果数据库中的十六进制字段是文本字段,例如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>
关于sql - ColdFusion 表单不向数据库提交数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37285151/