我有一个 sql 语句正在搜索我的数据库
"SELECT catelogue.ARTIST, catelogue.TITLE, catelogue.`CAT NO.`,
catelogue.FORMAT,catelogue.`IMAGE PATH`
FROM catelogue
WHERE catelogue.TITLE LIKE '%$search%'"
现在我在 sql 中明白您的百分比是您的通配符,但我现在需要搜索以搜索 100% 夏季,因为这是 CD 的标题。
有没有办法做到这一点,使百分号不会影响我的其他通配符?
编辑:
所以如果我使用这个
$search = addcslashes(mysql_real_escape_string($search), '%_');
那么是否需要更换预制
$search = preg_replace("/[^a-zA-Z 0-9'/''+'.,:?-]+/", "", $search)
预置换物可以与mysql_real_escape_string一起使用吗?
'%
是一个转义的"%"字符。
已编辑:
.PHP:
$search = "100'% Summer";
一般使用string addcslashes ( string $str , string $charlist )
:
$search = "100% Summer";
$search = addcslashes($search, '%_');
不要忘记使用string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier ] )
来防止SQL注入。因此,最终代码可能如下所示:
$search = "100% Summer";
$search = addcslashes(mysql_real_escape_string($search), '%_');
您可以使用
'
转义通配符,例如
str_replace(array('%', '_'), array(''%', ''_'), $subject)
.
请参阅 http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#operator_like。
SELECT catelogue.ARTIST, catelogue.TITLE, catelogue.`CAT NO.`,
catelogue.FORMAT,catelogue.`IMAGE PATH`
FROM catelogue
WHERE catelogue.TITLE LIKE '%100'% Summer%';
您可以使用反斜杠转义百分号
$search = str_replace('%', ''%', $search);
...
WHERE catelogue.TITLE LIKE '%$search%'
顺便说一下,如果你的$search
来自用户输入,那么你的代码很容易受到SQL注入的影响。