2011-06-14 2 views
0

SQL에별로 익숙하지 않아 웹 사이트 용으로 만든 간단한 우편 번호 찾기 도구가 있습니다. .SQL 검색 구성

$query = "select * from zipcodes2 where ZipCode like \"%$trimmed%\" 

* \ "% $으로 물론 %의 * 사용자가에 입력 실제 우편 번호입니다 정돈이 잘 작동하지만 지금은에 대한 사용자 검색을시키는하여 더 많은 사전을 만들고 싶어 다음 SQL은 다음과 같다 city ​​나 state뿐 아니라 zipcode가 아니라 이미 작성된 컬럼이 있고 "City"와 "State"라는 이름이 붙어 있습니다 .SQL 라인에 정확히 무엇을 입력해야합니까? 코드의 다른 부분, 특히 \ "% $ trimmed % \ part?

+0

하면 사용자가 부분적 된 우편 번호를 검색 두지 않을 경우, 당신은 5 문자 입력을 요구하고 있습니다 즉, 당신은 항등 연산자 (=)를 사용하지 않을 수 있습니다 "처럼". search-term의 양쪽에 % 와일드 카드 %를 사용하는 경우 전체 테이블을 스캔해야합니다. – Tim

+0

감사합니다. 나는 그것을 시도하고 그것은 작동합니다. – zach

답변

1

이것은 좋은 방법은 아니지만이 함께 원하는 당신이 가까이 얻을 수 있습니다 :

$query = "select * from zipcodes2 where ZipCode like '%$trimmed%' or (CONCAT(City, ',', State) = '$trimmed')" 

을하지만 당신이 Chicago,IL 및하지로 나올 수 있도록 사용자의 응답이없는 공백이 없습니다 있는지 확인해야합니다 Chicago, IL 또는 Chicago , IL과 같은 것입니다.

당신은 당신의 쿼리 전에이 퍼팅이 작업을 수행 할 수 있습니다 :

$trimmed = preg_replace('/\s+/', ' ', $trimmed); 
+0

이것은 작동하지 않았습니다. 그것을 시도 할 때 쿼리가 무엇이든 상관없이 테이블의 첫 번째 행을 보여줍니다. – zach

+0

@zach 내 잘못 ... MySQL을위한 잘못된 SQL. 그 소용돌이. – NullRef

+0

그래도 작동하지만 사용자가 입력 한 후에 공백을 제거하는 방법은 무엇입니까? 나는 결코 사용자가 공백을 넣지 않도록하고 싶지 않다. 그것은 신뢰할 수 없습니다. – zach

1

당신은 같은 것을 시도 할 수 : 우편 번호 LIKE \는 "% $으로 %를 손질 WHERE zipcodes2 FROM

SELECT * :

select * 
    from zipcodes2 
    where 
    (
     ZipCode like '%$trimmed%' 
     OR City like '%City%' 
     OR State like '%State%' 
    ) 
0

당신은 같은에 SQL 쿼리를 수정하여 달성 할 수 있어야한다을 \ "또는 (State = \"$ state_vairable \ "및 City = \"$ city_variable \ ")

이것은 물론 최종 목표에 따라 다릅니다. 명시 적으로 도시/주 조합을 찾으려는 경우 위의 방법이 효과적입니다.

사람들이 우리가 "townsville"이라고하는 모든 장소의 우편 번호를 찾을 수있게하려면 괄호를 제거하고 AND를 OR로 변경하십시오.

+0

내 최종 목표는 사용자가 우편 번호로 검색하거나 도시/주 조합을 사용하여 업체 정보를 표시 할 수있게하는 것입니다. 시카고, 일리노이 주 등 도시에 들어야합니다. 어떻게해야합니까? – zach

+0

그런 경우 위의 SELECT 문을 사용해야합니다. –

+0

\ "$ state_vairable \"및 \ "$ city_variable \"이있는 이유는 무엇입니까? 사용자가 정보에 입력 할 입력란이 하나뿐입니다. 그것은 작동하지 않습니다. 나는 3 곳 모두에서 똑같은 $을 사용하여 시험해 보았습니다. – zach