2014-08-30 97 views
0

基本上我的問題是,在某些情況下,php中的mysql會返回一個沒有錯誤的空數組。Php mysqli沒有給出任何結果

我從表'newproducts'獲取所有產品,其名稱與被調用的網址相同。

所以,當我打電話: http://domain.com:9090/db/product/3-Acetyl-5-bromopyridine

正被調用的查詢(url_decode後):

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

其正確返回的所有產品。

但如果我叫: 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 後,我做urldecode查詢是這樣(在瀏覽器中使用的var_dump):

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 

返回任何結果(空數組),沒有錯誤。

另外,上面在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 $查詢上述請求 – 2014-08-30 12:50:17

+0

我已經使用var_dump和echo兩個查詢,我已經顯示了上面的輸出。 Echo和var_dump顯示相同的結果。 – 2014-08-30 12:53:11

回答

0

我不得不使用html_entity_decode爲好。結果看起來是一樣的,但它甚至沒有var_dump,因爲有些字符是由Web瀏覽器自動轉換的。 html_entity_decode解決了它。