ColdFusion/mySQL - 引号和撇号

Big*_*ike 1 mysql coldfusion cfquery

使用ColdFusion应用程序将数据插入mySQL数据库时遇到问题.我已经尝试过REPLACE和PRESERVESINGLEQUOTES以及其他一些东西,但我现在已经迷失了.

它基本上只是我在表单中有文本框或文本字段的地方 - 不允许用户在字段中使用引号(发送错误 - 您的SQL语法中有错误;)并且当使用撇号时它会获得加倍(像马克的这个词变成了马克的)

任何帮助,将不胜感激.我的脑袋即将爆裂.


解决方案:cfqueryparam

Mat*_*che 12

你应该使用cfqueryparam像这样的东西会起作用

<cfset userEnteredData = "I'm using apostrophes">

<cfquery>
INSERT INTO data (userText)
VALUES (<cfqueryparam cfsqltype="cf_sql_varchar" value="#userEnteredData#">)
</cfquery>
Run Code Online (Sandbox Code Playgroud)

编辑

这样做有三个原因:

  1. 这会创建一个" 绑定变量 ",其中(除此之外)可以防止SQL注入攻击.
  2. CFQUERYPARAM 自动转义引号和撇号.
  3. 如果您传递变量列表,如果使用该list属性,它将根据cfsqltype正确地转义列表.

  • 原因4 - 如果经常运行所述查询,则可以加快查询的执行时间. (4认同)

Chr*_*ney 9

始终使用cfqueryparam......它将解决您的问题并使您的应用程序更安全.