如何让sql语句搜索百分号?

发布于 2024-12-24 20:23:57 字数 615 浏览 2 评论 0 原文

我有一个正在搜索我的数据库的 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 结合使用吗?

I have a sql statement that is searching my database

"SELECT catelogue.ARTIST, catelogue.TITLE, catelogue.`CAT NO.`, 
catelogue.FORMAT,catelogue.`IMAGE PATH` 
FROM catelogue 
WHERE catelogue.TITLE LIKE '%$search%'"

Now I understand in sql that your percent is your wildcard but I now need the search to search for 100% Summer because this is the title of a cd.

Is there a way to do this so that the percent sign dosn't affect my other wildcards?

EDIT:

So if I use this

$search = addcslashes(mysql_real_escape_string($search), '%_');

Is there then any need for preg replace

$search = preg_replace("/[^a-zA-Z 0-9\/\\+\.,:?-]+/", "", $search)

And can preg replace be used in conjunction with mysql_real_escape_string?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

浮生面具三千个 2024-12-31 20:23:58

\% 是转义的“%”字符。

已编辑

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), '%_');

\% is an escaped “%” character.

Edited:

PHP:

$search = "100\% Summer";

in general use string addcslashes ( string $str , string $charlist ):

$search = "100% Summer";
$search = addcslashes($search, '%_');

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:

$search = "100% Summer";
$search = addcslashes(mysql_real_escape_string($search), '%_');
夜血缘 2024-12-31 20:23:58

您可以使用 \ 转义通配符,例如使用
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 with
str_replace(array('%', '_'), array('\%', '\_'), $subject).

See http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#operator_like.

白芷 2024-12-31 20:23:58
SELECT catelogue.ARTIST, catelogue.TITLE, catelogue.`CAT NO.`, 
catelogue.FORMAT,catelogue.`IMAGE PATH` 
FROM catelogue 
WHERE catelogue.TITLE LIKE '%100\% Summer%';
SELECT catelogue.ARTIST, catelogue.TITLE, catelogue.`CAT NO.`, 
catelogue.FORMAT,catelogue.`IMAGE PATH` 
FROM catelogue 
WHERE catelogue.TITLE LIKE '%100\% Summer%';
橘和柠 2024-12-31 20:23:58

您可以使用反斜杠转义百分号

$search = str_replace('%', '\%', $search);

...

WHERE catelogue.TITLE LIKE '%$search%'

顺便说一句,如果您的 $search 来自用户输入,那么您的代码很容易受到 SQL 注入

You can escape percent sign with backslash

$search = str_replace('%', '\%', $search);

...

WHERE catelogue.TITLE LIKE '%$search%'

By the way, if your $search comes from the user input, then your code is vulnerable to SQL injection.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文