0

我有一个包含数千个 URL 的 sql 数据库。我不断更新它,而不使用 php5 对 Url 进行任何修改。

现在,我想只添加数据库中不存在的 url,我通过使用这个 sql 查询检查数据库来做到这一点

$q = $urlToCheck;
SELECT * FROM pligg WHERE rawUrl LIKE '$q%'

这是问题所在,一些已经在数据库中的 Url 就像

http://example.com/a_b_c.html
http://example.com/a1b1c.html

如果我运行查询

$q = 'http://example.com/a_b';
SELECT * FROM pligg WHERE rawUrl LIKE '$q%'

然后它将返回两个 URL。我只想返回完全匹配的 URL。所以,我只想得到这个网址

http://example.com/a_b_c.html

有什么帮助吗?

4

1 回答 1

5

对于MySQL,您需要转义_; 它应该是\_。对于MSSQL,它应该是[_]

编辑这是关于MySQL和转义通配符
的手册页。如果您愿意,您实际上可以指定转义字符。_%_

$q = 'http://example.com/a_b';
$qescaped = str_replace('_', '\_', $q);

$result = my_execute_query_function($qescaped);

这是 MSSQL 的手册页

$qescaped = str_replace('_', '[_]', $q);

(另外:MSSQL 还允许您指定转义字符(我不知道))。

其他 RDBMS,如PostgreSQLOracle等可能有自己的转义字符和/或指定它们的方式。检查他们各自的手册页(为方便起见链接)。

于 2012-07-19T16:23:56.177 回答