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のみを返したい。だから、私はこの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ではエスケープ文字を指定することもできます(私は知りませんでした))。

PostgreSQLOracleなどの他のRDBMSには、独自のエスケープ文字やそれらを指定する方法がある場合があります。それぞれのマニュアルページを確認してください(便宜上リンクされています)。

于 2012-07-19T16:23:56.177 に答える