【发布时间】:2016-11-15 12:20:51
【问题描述】:
我有一个如下所示的 mysql 查询
SELECT count(id) as total,
MIN(product_price) as min_price,
MAX(product_price) as max_price
FROM `products_details`
WHERE subcat_id = 425
AND MATCH(alternate_name, product_desc, keywords) AGAINST ('+gas +(>lighter <lighters)' IN BOOLEAN MODE)
此查询应根据表记录返回计数值为 7。
但是当我在我的网站中使用 php 执行此查询时,它返回的计数值为 59。
当我直接向 phpmyadmin 运行此查询时,我得到了正确的结果。
谁能告诉我为什么会遇到这种问题以及如何解决这个问题。
注意: 当我在 phpmyadmin 中运行时像下面这样更改此查询时,我得到了错误的结果 59。
SELECT count(id) as total,
MIN(product_price) as min_price,
MAX(product_price) as max_price
FROM `products_details`
WHERE subcat_id = 425
AND MATCH(alternate_name, product_desc, keywords) AGAINST ('+gas +(>lighter <lighters)' IN BOOLEAN MODE)
使用php执行此查询的方法如下
if (!isset($connection))
die('Database connection is not valid');
$result = @mysql_query($sql, $connection) or die('Could not connect: ' . mysql_error() . ' :: executeQuery');
if (!$result)
return;
if (!@mysql_num_fields($result))
return false;
else {
$result = $result;
}
if (!isset($result))
die('Error in Query');
else {
$ret = null;
if ($object = mysql_fetch_object($result)) {
$ret = $object;
}
mysql_free_result($result);
return $ret;
}
【问题讨论】:
-
您是否通过类似
mysql_real_escape_string()的方式运行查询,这可能会改变您的查询? -
您能否添加有关如何在您的网页上运行此查询的信息?
-
错误的结果 59?但 59 显然是正确的结果。我想要 59。
-
顺便用
mysqli_*代替mysql_*。此外,您可以尝试将编码设置为 utf8:mysqli_query($conn, "set names 'utf8'"); -
@rbr94 ,看我的问题我已经添加了执行这个查询的方法。
标签: php mysql phpmyadmin innodb myisam