2011-02-23 2 views
2

다음과 같은 mysql 쿼리를 만들고 싶습니다. SELECT * FROM something WHERE title LIKE '%".$_POST["search"]."%' OR something LIKE '%".$_POST["search"]."%' AND costs < '".$max."'WHERE 절의 한 부분을 다른 여러 부분에 어떻게 할당 할 수 있습니까?

이렇게하면 검색과 같은 제목과 검색과 같은 결과가 $ max보다 작은 모든 결과를 얻을 수 있습니다. 하지만 $ search와 (과) 같은 제목의 경우에도 최대 금액은 <입니다. 그러나 나는 스크립트에 비용을 < $ 최대 두 번 넣고 싶지 않아. 두 가지 모두에 할당하는 방법이 있습니까? 어쩌면 괄호를 사용하십시오. WHERE (title LIKE '%".$_POST["search"]."%' OR something LIKE '%".$_POST["search"]."%') AND costs < '".$max."'

어떻게하면됩니까?

감사합니다. phpheini

+0

where 절에 '% string %'이 (가)없는 것이 좋습니다. 그것은 효과가 있지만 매우 느릴 것입니다. 이 문제를 해결하기 위해 MySQL에서 제공하는 전체 텍스트 검색 기능을 살펴 보는 것이 좋습니다. –

답변

6

는 OR 먼저 평가 될 수 있도록 예, 괄호를 사용할 수 있습니다

WHERE (title LIKE '%foo%' OR something LIKE '%foo%') 
AND costs < '20' 

다른 발언 :

  • 난 당신이 SQL을 방지하기 위해 mysql_string_real_escape를 사용하여 문자열을 탈출하는 것이 좋을 것을 주입 공격. 또는 PDO 및 prepared statements을 살펴보십시오.
  • full-text search을 사용하는 것이 더 빠른 방법이기 때문에 다른 방법으로 볼 수도 있습니다.
+3

OP가이 솔루션을 질문의 일부로 올린 경우에도 위와 같이 투표해야합니다. –

+0

매우 감사합니다. 대단히 감사합니다! – phpheini