我有一个列包含字符串父亲节如果只搜索单词父亲查询显示结果父亲节 但如果输入字符串 父亲节 父亲节
无结果显示
我的查询是
select * from temp where title like '%Father's%' datatype = 0
select * from temp where title like '%Father''s%' datatype = 0
select * from temp where title like '%Father\'s%' datatype = 0
答案 0 :(得分:1)
使用mysql_real_escape_string转义特殊字符
$search = mysql_real_escape_string($search);
使用PDO方式:
$stmt = $db->prepare("SELECT * FROM `temp` WHERE `title` LIKE ?");
$stmt->bindValue(1, "%$search%", PDO::PARAM_STR);
$stmt->execute()
注意: Please, don't use mysql_*
functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDO或MySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial。
答案 1 :(得分:0)
您的疑问
'
模式中转义LIKE
(仅转发%
和_
)我相信正确的查询,但我没有检查,应该是:
select * from temp where title like "%Father's%" AND datatype = 0
答案 2 :(得分:0)
使用此功能可以确定:
select * from temp where title like "%Father\\'s%" datatype = 0;
这样可行。
对于你的知识,我想建议你,当你在数据库中插入它时,总是使用stripslashes函数来避免斜线。