我正在写一个submit.cfm文档。我正在尝试将用户信息写入一个空白的新数据库。 这是我的代码:
<cfif ParameterExists(form.submit)>
<cfquery name="AddProfile" datasource="careers_acad_internship">
INSERT INTO internships
VALUES (
'#form.stu_first#', '#form.stu_last#',
#form.stu_id#, '#form.sup_name#',
'#form.sup_email#', #form.sup_phone#,
'#form.emp_name#', '#form.emp_add#',
'#form.spec_obj#', '#form.spec_duties#',
'#form.semester#', #form.intern_year#,
'#form.work_sche#', '#form.digital_sig#')
</cfquery>
但事实证明这是一个错误。我不知道是否有一些语法错误。
错误信息如下。
栏目0
ID CFQUERY
LINE 24
RAW_TRACE at cfsubmit2ecfm1505563048.runPage(D:\ web \ careers \ academicinternship \ submit.cfm:24)
模板D:\ web \ careers \ academicinternship \ submit.cfm
TYPE CFML
谢谢,
答案 0 :(得分:4)
您需要包含列名列表以插入值 例如:
INSERT INTO internships (stu_first, stu_last, stu_id, sup_name,sup_email,sup_phone,emp_name,emp_add,sec_obj,spec_duties,semester,intern_year,work.sche,digital_sig)
VALUES('#form.stu_first#','#form.stu_last#',#form.stu_id#,'#form.sup_name#','#form.sup_email#',#form.sup_phone#,'#form.emp_name#', '#form.emp_add#','#form.spec_obj#','#form.spec_duties#','#form.semester#',#form.intern_year#,'#form.work_sche#','#form.digital_sig#')
当然,假设您的列名与表单变量名相同。
答案 1 :(得分:4)
首先,仔细检查您的数据类型,我注意到您引用了一些变量而不是其他变量,请确保下面的数据正确。
<cfquery datasource="foobar"> INSERT INTO internships (stu_first,stu_last,stu_id,sup_name,sup_email,sup_phone,emp_name,emp_add,spec_obj,spec_duties,semester,intern_year,work_sche,digital_sig) VALUES( <cfqueryparam value="#form.stu_first#" cfsqltype="cf_sql_varchar" />, <cfqueryparam value="#form.stu_last#" cfsqltype="cf_sql_varchar" />, <cfqueryparam value="#form.stu_id#" cfsqltype="cf_sql_integer" />, <cfqueryparam value="#form.sup_name#" cfsqltype="cf_sql_varchar" />, <cfqueryparam value="#form.sup_email#" cfsqltype="cf_sql_varchar" />, <cfqueryparam value="#form.sup_phone#" cfsqltype="cf_sql_integer" />, <cfqueryparam value="#form.emp_name#" cfsqltype="cf_sql_varchar" />, <cfqueryparam value="#form.emp_add#" cfsqltype="cf_sql_varchar" />, <cfqueryparam value="#form.spec_obj#" cfsqltype="cf_sql_varchar" />, <cfqueryparam value="#form.spec_duties#" cfsqltype="cf_sql_varchar" />, <cfqueryparam value="#form.semester#" cfsqltype="cf_sql_varchar" />, <cfqueryparam value="#form.intern_year#" cfsqltype="cf_sql_integer" />, <cfqueryparam value="#form.work_sche#" cfsqltype="cf_sql_varchar" />, <cfqueryparam value="#form.digital_sig#" cfsqltype="cf_sql_varchar" /> ) </cfquery>
答案 2 :(得分:4)
如果您可以发布您收到的错误,那将有所帮助。
另外,一个巨大的建议 - 在插入的值上使用cfqueryparam来防止SQL注入,例如:
<cfqueryparam value="#form.stu_first#" cfsqltype="cf_sql_varchar">
仔细检查您的#
标志和刻度线,更不用说这些变量的存在了。有时我会在插入之前放置<cfabort>
,并且启用调试输出后,您可以向下滚动并查看所有表单变量。然后我会复制/粘贴那些以确保我拼写正确的一切。
答案 3 :(得分:2)
有两件事情跳出来:
<cfqueryparam>
(以及应用程序中的每个其他查询)。这是为了防止SQL注入,也可以稍微提高性能。