기본적으로 내 문제는 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;
}
위의 요청에 대한 echo $ query –
두 개의 쿼리에 대해 var_dump와 echo를 사용했으며 위에 출력을 표시했습니다. echo와 var_dump는 같은 결과를 보여줍니다. –