如何让sql语句搜索百分号?
我有一个正在搜索我的数据库的 sql 语句
"SELECT catelogue.ARTIST, catelogue.TITLE, catelogue.`CAT NO.`,
catelogue.FORMAT,catelogue.`IMAGE PATH`
FROM catelogue
WHERE catelogue.TITLE LIKE '%$search%'"
现在我在 sql 中理解你的百分比是你的通配符,但我现在需要搜索来搜索 100% Summer 因为这是一张 CD 的标题。
有没有办法做到这一点,以便百分号不会影响我的其他通配符?
编辑:
所以如果我使用这个,
$search = addcslashes(mysql_real_escape_string($search), '%_');
那么是否需要 preg 替换
$search = preg_replace("/[^a-zA-Z 0-9\/\\+\.,:?-]+/", "", $search)
并且 preg 替换可以与 mysql_real_escape_string 结合使用吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
\%
是转义的“%”字符。已编辑:
PHP:
一般使用
string addcslashes ( string $str , string $charlist )
:不要忘记使用
string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier ] )
防止 SQL 注入。所以最终的代码可能如下所示:\%
is an escaped “%” character.Edited:
PHP:
in general use
string addcslashes ( string $str , string $charlist )
:Don't forget to use
string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier ] )
to prevent SQL injection. So the final code might looks like:您可以使用
\
转义通配符,例如使用str_replace(array('%', '_'), array('\%', '\_'), $subject)
。请参阅http://dev.mysql.com/ doc/refman/5.5/en/string-comparison-functions.html#operator_like。
You can escape the wildcard characters using
\
, for example withstr_replace(array('%', '_'), array('\%', '\_'), $subject)
.See http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#operator_like.
您可以使用反斜杠转义百分号
顺便说一句,如果您的
$search
来自用户输入,那么您的代码很容易受到 SQL 注入。You can escape percent sign with backslash
By the way, if your
$search
comes from the user input, then your code is vulnerable to SQL injection.