基本上我的问题是php中的mysql在某些情况下会返回一个没有错误的空数组。
我从表格中获得所有产品'新产品'其名称与调用的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-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
返回NO结果(空数组),没有错误。
同样,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 :(得分:0)
我也必须使用html_entity_decode。结果似乎相同,但即使使用var_dump也是如此,因为某些字符是由Web浏览器自动转换的。 html_entity_decode解决了它。