有关查找文本的mysQL查询帮助

时间:2010-05-11 14:35:58

标签: php sql mysql escaping

我需要获取eventname字段包含此文本的所有行(包括单引号)

's Birthday

我尝试了这个,但它给出了错误:

select * from fab_scheduler where eventname like '%\'s Birthday%'

我如何构建此类查询?

由于

3 个答案:

答案 0 :(得分:1)

使用双引号或转义单引号。

select * from fab_scheduler where eventname like "%'s Birthday%"

select * from fab_scheduler where eventname like '%''s Birthday%'

答案 1 :(得分:1)

如果您打算在SQL中包含's,则需要escape

  

有几种方法可供选择   引用字符串中的字符:

     
      
  • 带有“'”的字符串中的“'”可写为“''”。
  •   
  • 引用“”“的字符串中的”“”可写为“”“”
  •   
  • 通过转义字符(“\”)
  • 在引号字符前面   
  • 用“”“引用的字符串中的”'“不需要特殊处理   不需要加倍或逃脱。在里面   同样的方式,“”在引用的字符串里面   “'”不需要特殊处理。
  •   

此外,如果要在程序中构造SQL,则应该强烈考虑使用编程语言中的mysql_real_escape_string或其等价物来转义进入SQL查询的变量。如果不这样做将使您的应用程序容易受到SQL注入攻击的攻击,无论是谁控制所述变量的数据源(可能是您的用户;请记住,“您的用户”可能意味着“整个互联网”,具体取决于具体情况)。

编辑:引用上面的dev.mysql.com说明。

答案 2 :(得分:0)

select * from fab_scheduler where eventname like "%'s Birthday%"