首页 > 解决方案 > 在coldfusion函数中使用sql查询的正确方法是什么

问题描述

我有这段代码可以将变量传递给函数并插入它。但我收到错误:

<cffunction name="insertSupplierPersonnel" output="false" access="public" returnType="struct">
    <cfargument name="name" type="string" required="true" />
    <cfargument name="email" type="string" required="false" default="" />
    <cfargument name="office_phone" type="string" required="false" default="" />
    <cfargument name="mobile_phone" type="string" required="false" default="" />
    <cfargument name="designation" type="string" required="false" default="" />

    <cfset var res = '' />

    <cfquery datasource="#session.dsn_aset#" result="res">
        INSERT INTO `supplier_personnel_incharge` (
            `name`,
            `email`,
            `office_phone`,
            `mobile_phone`,
            `designation`
        )
        VALUES
        (
            cfargument.name,
            cfargument.email,
            cfargument.office_phone,
            cfargument.mobile_phone,
            cfargument.designation
        ) ;
    </cfquery>

    <cfreturn res />
</cffunction>

<cfset res = insertSupplierPersonnel(name='#form.personnel_name#', email='#form.personnel_email#', office_phone='#form.personnel_office_phone#', mobile_phone='#form.personnel_mobile_phone#', designation='#form.personnel_designation#') />

<cfdump  var="#res#">

我收到此错误:

在此处输入图像描述

有问题cfargument.namecfargument插入查询的正确方法是什么?提前致谢。

标签: mysqlfunctioncoldfusionsql-insertcoldfusion-2016

解决方案


首先,正确的范围是arguments,不是cfargument。所以,改变这种事情:

cfargument.name,

对此:

arguments.name,

接下来,您必须用井号将变量名括起来以获取变量的值,即#arguments.name#.

接下来,使用查询参数,即<cfqueryparam value="#arguments.name#">. 除其他外,它们将转义 SQL 查询语法中使用的特殊字符。


推荐阅读