2014-08-30 5 views
0

기본적으로 내 문제는 PHP에서 mysql이 오류없이 빈 배열을 반환하는 경우입니다.PHP mysqli 결과가 없습니다

'newproducts'테이블에서 모든 제품을 가져 오는데, 이름이 호출 된 URL과 동일합니다.

그래서 내가 전화 할 때 : http://domain.com:9090/db/product/3-Acetyl-5-bromopyridine

호출되는 쿼리 (url_decode 후)입니다 : 정확하게 모든 제품을 반환

SELECT * FROM `newproducts` WHERE `name` = '3-Acetyl-5-bromopyridine' LIMIT 1 

.

는하지만 호출하는 경우 : 에러없이 어떠한 결과 (빈 배열)을 반환

SELECT * FROM `newproducts` WHERE `name` = '[3aa,4a(E),5b,6aa]-4-[4-(3-Chlorophenoxy)-3-oxo-1-butenyl]hexahydro-5-hydroxy-2H-cyclopenta[b]furan-2-one' LIMIT 1 

: 내가 쿼리를 URLDECODE 할 후 http://domain.com:9090/db/product/%5B3aa,4a%28E%29,5b,6aa%5D-4-%5B4-%283-Chlorophenoxy%29-3-oxo-1-butenyl%5Dhexahydro-5-hydroxy-2H-cyclopenta%5Bb%5Dfuran-2-one 이 (브라우저에서 사용 위해서 var_dump)입니다.

위의 phpmyadmin의 정확한 쿼리는 결과를 올바르게 반환합니다.

mysqli_set_charset($con, "utf8"); 
mysqli_real_escape_string($con, $name); 

사전에 감사 : 나는 행운으로 쿼리를 실행하기 전에

마지막으로, 나는 아래 줄을 사용하여 시도했다!

쿼리의 코드 :

function getOneResFromDB($con, $text) { 
    mysqli_set_charset($con, "utf8"); 
    mysqli_real_escape_string($con, $text); 

    $query = "SELECT * FROM `newproducts` WHERE `name` = '" . $text . "' LIMIT 1"; 

    $result = mysqli_query($con, $query) or die(mysqli_error($con)); 

    $array = array(); 
    while ($row = mysqli_fetch_assoc($result)) { 
     $array[] = $row; 
    } 

    return $array; 
} 
+0

위의 요청에 대한 echo $ query –

+0

두 개의 쿼리에 대해 var_dump와 echo를 사용했으며 위에 출력을 표시했습니다. echo와 var_dump는 같은 결과를 보여줍니다. –

답변

0

나뿐만 아니라의 html_entity_decode을 사용했다. 결과는 동일하게 보였지만 일부 문자는 웹 브라우저에서 자동으로 변환 되었기 때문에 var_dump를 사용하는 경우에도 그렇지 않았습니다. html_entity_decode가 해결했습니다.