Coldfusion - 更新表格

Jen*_*nda 0 forms coldfusion sql-update

你能给我建议吗?如何制作允许您插入和更新项目的工作表单?我有一种可用于插入的表单,但是当我想以<input>这种形式更新时,它会返回错误,其中包含表单中的所有数据。所以我想请你帮忙更新。

在此处输入图片说明

我的代码:

第 1 页 插入零件 (此有效)

<cfif isdefined("Form.Name")>

    <cfquery name"something" datasource="#something#>
    INSERT INTO table..
    Values (...)
    </cfquery>

</cfif>
Run Code Online (Sandbox Code Playgroud)

更新部分

<cfif isDefined('url.action')>

  <cfquery datasource="Something" name="Something">

    Update table.. 
    SET Name= <cfqueryparam cfsqltype="cf_sql_varchar" value="#Form.Name#"> 
    Where Some_id = '#Form.ID#'

  </cfquery>
</cfif> 
Run Code Online (Sandbox Code Playgroud)

第1页 表格

<table>
    <form action="path\Page1.cfm?action=update" method="post">

    <cfloop query="languageField">
      <input name="Name" value="#SomeQuery.Name#">
      <input type="Submit" value="Submit">
    </cfloop>

    </form>
</table>
Run Code Online (Sandbox Code Playgroud)

Adr*_*eno 5

您的更新语句#form.id变量之后缺少一个。您还可以form.id在将数字作为字符串传递的值周围使用单引号。您还应该使用cfqueryparam标记包装所有用户生成的数据以防止 SQL 注入攻击。

Where Some_id = '#Form.ID'
Run Code Online (Sandbox Code Playgroud)

应该

Where Some_id = #Form.ID#
Run Code Online (Sandbox Code Playgroud)

但更恰当的应该是

Where Some_id = <cfqueryparam value="#Form.ID#" cfsqltype="cf_sql_bigint">
Run Code Online (Sandbox Code Playgroud)

  • @Jenda-我的意思是,如果在更新页面上输出 form.id 的值是多少?它是否包含单个 id 或 csv 数字列表,即“2”或“3,5,7”?由于您的 &lt;form&gt; 的结构,我怀疑是后者。这是一个不同的问题,但也会导致您描述的错误,因为“3,5,7”不是整数。您应该打开一个新线程,并确保包含您的表单 - 包括您定义“id”字段的位置(它不在您原来的问题中,afaict)。 (2认同)