2011-06-09 12 views
0

私はLIKEクエリを実行しようとしていますが、いくつかの結果を得ようとしていますが、私が渡すテキストにはクエリを壊す特殊文字がいくつかあります。PHP mysql LIKEと特殊文字が正しく動作しない

我々はテキストであることをこのようなものと仮定した場合:

var test `select` `query`="$newval + "dsadsa$ ? "$test ? 

をし、私はまた、VARCHAR

として塔内まったく同じテキストを持っているし、クエリ

SELECT * FROM table WHERE column LIKE '%$text%' 
を実行します

は、返す行がないことを示します。

編集:私は、データベース内のデータをポストするとき、私は単にmysqlの実際のエスケープ文字列を使用して、私は検索する]をクリックし、テキストを表示したときに、私は、テキスト ににhtmlentitiesを入れて、私SUBSTRそれはからもちろん

mysql_query("SELECT * FROM table WHERE column LIKE '%" . $text . "%'"); 

:50から0と検索クエリ

+0

コード全体を投稿できますか?問題は非常に不明です。 – AlexanderMP

+1

とselect文では、LIKE '%$ test'にする必要がありますか? – ldg

+0

その場合、文字列の最後に '$ test'が表示されるように厳密に調べていますか?つまり、上記は何も返されません。しかし、もしあなたが '%$ test%'と同じようにLIKE '%$ test%'を使うと結果が見えるはずです... –

答えて

0

あなたの文字列中の特殊文字をエスケープするmysql_real_escape_string()を使うことができます。

0

は直接文字列に書き込み変数を避けるようにしてくださいか、それが問題を(+それは本当に素敵ではありません)が発生することがあり$text変数が本当に正しいことを確認してください(echo $text)。エスケープ文字が問題を引き起こす可能性があります。もちろん、問題の原因となる他の多くのものがある可能性があります。これはアプリケーションのアーキテクチャに依存します。$textを使用します。