我正在使用 ColdFusion 11 和 MySQL5 数据库,所有内容都设置为 UTF-8 字符编码。当我的选择包含单引号时,我无法使它们正常工作。这是一个简单的例子:
我有一段简单的sql:
select * from table where column = 'I've got a single quote';
在我的 sql 客户端中,我需要修改它以转义单引号,因此:
select * from table where column = 'I''ve got a single quote';
这可以正常工作。
在 ColdFusion 中,查询如下所示:
<cfquery name="qryName" datasource="dsn">
select * from table where column = <cfqueryparam CFSQLType="CF_SQL_VARCHAR" value="I've got a single quote" />
</cfquery>
但是,该行没有返回,也没有错误。
我也尝试过使用 preserveSingleQuotes,但仍然没有返回任何内容:
<cfqueryparam CFSQLType="CF_SQL_VARCHAR" value="#preserveSingleQuotes(I've got a single quote)#" />
任何人都可以提出什么问题吗?
- - 没问题 - -
看来我的测试还不够好。我正在测试的数据结果与我预期的不同。我从 JSON 数据包中获取数据,当转储到浏览器时显示以下字符串:
Didn't vote
然而,当我检查实际数据包时,我看到字符串的 JSON 表示是这样的:
Didn't vote
因此与数据库中的内容不匹配。所以,我的错,这不是问题,并且恢复了对 cfqueryparam 功能的所有信心 :-)