我有一个包含数千个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%'
然后它将返回两个Urls。我想只返回完全匹配的Url。所以,我想只得到这个网址
http://example.com/a_b_c.html
任何帮助?
答案 0 :(得分:5)
对于 MySQL ,您需要转义_
;它应该是\_
。对于 MSSQL ,它应该是[_]
修改强>
_
上的Here's the manual page以及MySQL的%
和_
转义的通配符。如果愿意,您可以实际指定转义字符。
$q = 'http://example.com/a_b';
$qescaped = str_replace('_', '\_', $q);
$result = my_execute_query_function($qescaped);
Here's the manual page用于MSSQL。
$qescaped = str_replace('_', '[_]', $q);
(另外:MSSQL还允许你指定转义字符(我不知道))。
PostgreSQL,Oracle等其他RDBMS可能有自己的转义字符和/或指定它们的方式。检查各自的手册页(为方便起见,链接)。