【问题标题】:mysql_real_escape_string() not working in cakePHPmysql_real_escape_string() 在 cakePHP 中不起作用
【发布时间】:2014-09-09 15:16:32
【问题描述】:

我的查询是这样的,

... ON (`Test`.`id` = `Form`.`close_`%)...

它抛出错误说Syntax error or access violation: 1064。我正在使用 cakePHP。我尝试使用

$field_name='close_%';
Sanitize::clean(utf8_encode($field_name),array('encode' => false));

我也试过mysql_real_escape_string()

我的专栏名称是close_%

但是还是不行。如何在使用 CakePHP 的查询中绕过带有 % 符号的列名?

【问题讨论】:

  • `close_`% 不是有效的列名。你想在这里做什么?是`close_%`吗?
  • 避免在列名中使用运算符,应该没问题。
  • @tadman 是的,它是 close_%。我之前已经创建了这个列名。我应该如何查询该列?
  • @GeorgeCummins 我在这里没有使用搜索运算符。我的列名是 close_%
  • Sanitize 类自 2.4 起已弃用,很快将被删除。你能告诉我们完整的查询吗?你为什么不使用prepared statements

标签: php mysql cakephp-2.0 mysql-escape-string


【解决方案1】:

Sanitize 函数用于处理数据,而不是列名,mysql_real_escape_string 在这里肯定是一种绝望的行为,是为同样的事情而设计的。

您要做的是将您的列指定为:

`close_%`

确保将整个列名放在反引号内。

老实说,您一开始就不应该在列名中出现这样的垃圾。真是烦人。

【讨论】:

  • 感谢您的回答。但即使在回馈蜱虫之后,我仍然遇到这个错误......
  • 您确实需要更多地展示您的整个查询以及其中正在执行的上下文。如果% 在该上下文中是一个特殊字符,那么您选择了一个不切实际的列名。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-20
  • 1970-01-01
相关资源
最近更新 更多