2014-10-30 60 views
-1

我正在开发一个软件,我无法创建具有特殊字符的新成员(即人员)。例如,姓氏不能是“奥康纳”,因为它包含一个特殊字符。但是这种类型的姓氏可以直接添加到数据库中。无法创建具有特殊字符姓氏的成员

我正在使用ColdFusion和PostgreSQL 9.3。它通过在编码中删除姓氏之前的“cleantrim”函数起作用,但这是一个临时解决方案。任何人都可以帮助我如何做到这一点?

    '#Call.tSurName#', 
        '#TrimCleanValue(Call.tFirstName)#', 
        '#TrimCleanValue(CAll.tMiddleName)#', 
        '#TrimCleanValue(Call.tPReferredName)#', 
        '#TrimCleanValue(Call.tScoutingName)#', 
        '#TrimCleanValue(Call.tPostNominal)#', 
        '#Call.tTitle#', 
+1

使用'cfqueryparam',这将工作。您的报价需要被转义 – 2014-10-31 00:16:14

+0

Ouch,SQL注入。 – 2014-10-31 01:17:23

回答

4

对于所有数据库插入,您应该使用cfqueryparam。特别是来自客户的东西。 cfqueryparam不仅可以帮助防止SQL注入,还可以避免使用引号,并且可以帮助您加快查询速度。

<cfqueryparam cfsqltype="cf_sql_varchar" value="#Call.tSurName#">, 
<cfqueryparam cfsqltype="cf_sql_varchar" value="#Call.tFirstName#">, 
<cfqueryparam cfsqltype="cf_sql_varchar" value="#Call.tMiddleName">, 
<cfqueryparam cfsqltype="cf_sql_varchar" value="#Call.tPReferredName">, 
<cfqueryparam cfsqltype="cf_sql_varchar" value="#Call.tScoutingName">, 
<cfqueryparam cfsqltype="cf_sql_varchar" value="#Call.tPostNominal">, 
<cfqueryparam cfsqltype="cf_sql_varchar" value="#Call.tTitle">