2012-06-29 4 views
1

나는 AJAX에 의해 호출 된 php 스크립트를 가지고 있으며,보고자하는 와일드 카드 결과를 반환하지 않습니다. 무엇이 잘못되었는지 알 수 없습니다. 이상한 비트는 =.-,;," 등의 DB에서 비정상적인 문자를 찾으려고합니다. 내가 만들고있는 앱은 점자 검색을위한 영어 문자입니다.MYSQL PHP 와일드 카드

여기 내 코드가 있습니다.

$ENG = "english phrase" // Could be Equal sign, dash whatever 
$ENG_WILD = $ENG."%"; //Add in wildcard 
$result = mysql_query("SELECT * FROM $DB_TABLE WHERE ENG LIKE '$ENG' OR '$END_WILD' "); 
$row = mysql_fetch_array($result); 
$result = mysql_query("SELECT * FROM $DB_TABLE WHERE ENG LIKE '$ENG' OR '$END_WILD' "); 
if (mysql_num_rows($result)==0) { 
    die($Failed . mysql_error()); 
} 

// keeps getting the next row until there are no more to get 
while($row = mysql_fetch_array($result)) { 
    // Print out the contents of each row 
    echo $box."Dots needed for..".$row['ENG']."..are..".$row['BR_PAR']."..The Rule that applies..".$row['RULE']."</p>".$box_end; 
} 

내가 대신 %*를 사용하여 시도했지만 실패합니다. 여기 ENG에서 DB에있는 항목의 예는 다음과 같습니다 = (Nemeth Code: Equal Sign)

내가 올바른 결과를 얻을하지만 = 또는 = (Nemeth으로 실행하면 내가 어떤 결과를 얻을 수 없습니다 전체 입력과 위의 스크립트를 실행합니다. 나는 그것을 얻지 못한다. 나는 와일드 카드가 내가 원했던 것을 가질 것이라고 생각했을 것이다. 고마워.

답변

3

변수가 $ENG_WILD이지만 mysql_query() 함수에서 $END_WILD을 사용하고 있습니다. (EN G EN D 대)

당신이이 문제를 해결하고 여전히 작동하지 않는 경우, 문구 해당 필드의 시작 부분에 오면 끝에 %을 사용하는 경우에만 일치한다는 점에 유의하십시오. 시작 부분과 끝 부분에 %을 사용하여 시작 부분, 중간 부분 또는 끝 부분에 구문이 포함되어 있으면 일치시킵니다.

+0

멋진 캐치 ... 전체 타드처럼 느껴지지만 문제가 여전히 있습니다. – CertDoctor

+0

기다리십시오. POST 검색 필드에 %를 수동으로 입력하면 정상적으로 작동합니다. PHP에서 태그가있을 때 SQL이 올바르게 인식되지 않습니다. %를 PHP 문자열에 특별한 방법으로 선언해야합니까? – CertDoctor

+0

그래서 POST를 통해 PHP로 이동하는 문자열에 th %를 수동으로 넣으면 적절한 응답 TH & 점자 기호가 표시됩니다. – CertDoctor

0
SELECT * FROM $DB_TABLE WHERE ENG LIKE '$ENG' OR '$END_WILD' 

아마도 당신이 생각하는대로하지 마십시오. 난 당신이 원하는 생각

SELECT * FROM $DB_TABLE WHERE (ENG LIKE '$ENG') OR ('$END_WILD') 

:

SELECT * FROM $DB_TABLE WHERE ENG LIKE '$ENG' OR ENG LIKE '$END_WILD' 

두 번째는 '이'를 반환하기 때문에 그것은, '이'와 '이 %'에 대한보고도 중복의 괄호로,이 짓 게다가.

또 다른 이유가없는 한 정확하게 동일한 쿼리를 두 번 수행합니다. 나는 우리가 볼 수없는 많은 코드가 있다고 생각합니다.

마지막으로 결과가 0이 되어도 쿼리가 실패하지 않는다고해서 해당 쿼리에 대한 결과가 없을 수 있습니다.