[英]Php mysqli gives no results
基本上我的問題是在某些情況下php中的mysql返回一個空數組且沒有錯誤。
我從表“ 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
正確返回所有產品。
但如果我致電: http : //domain.com : 9090/db/product/%5B3aa,4a%28E%29,5b,6aa%5D-4-%5B4-%283-Chlorophenoxy%29-3-oxo-我對URL進行查詢解碼后的1-butenyl%5Dhexahydro-5-hydroxy-2H-cyclopenta%5Bb%5Dfuran-2-one是這樣的(在瀏覽器中使用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;
}
我還必須使用html_entity_decode。 結果似乎相同,但即使使用var_dump也沒有,因為某些字符由Web瀏覽器自動轉換。 html_entity_decode解決了它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.