Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用正弦、余弦或弧度时,mysql_查询无法获取所有记录_Php_Mysql_Phpmyadmin - Fatal编程技术网

Php 使用正弦、余弦或弧度时,mysql_查询无法获取所有记录

Php 使用正弦、余弦或弧度时,mysql_查询无法获取所有记录,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,我使用mysql_查询从mysql获取记录,但它不会返回准确的记录,而我在phpmyadmin中运行相同的查询,它会返回正确的记录 $sql = "SELECT * , (3959 * acos(cos(radians(28.5355161)) * cos(radians(latitude)) * cos( radians(longitude) - radians(77.39102649999995)) + sin(radians(28.5355161)) * sin(radians(la

我使用mysql_查询从mysql获取记录,但它不会返回准确的记录,而我在phpmyadmin中运行相同的查询,它会返回正确的记录

$sql    = "SELECT * , (3959 * acos(cos(radians(28.5355161)) * cos(radians(latitude)) * cos( radians(longitude) - radians(77.39102649999995)) + sin(radians(28.5355161)) * sin(radians(latitude)))) AS distance FROM businesses   HAVING distance < 100 ORDER BY distance DESC LIMIT 0,10";
$result = mysql_query($sql, $link);

while ($row = mysql_fetch_assoc($result)) {
$arr[]=$row;
}
echo '<pre>';print_r($arr);

如果我使用PHPMyAdmin运行相同的查询,它返回4条记录。

< P>你的查询在乘法的中间有输入代码!这将导致一个错误。尝试删除此

$sql = "
    SELECT *,
           (3959 *
             acos(
               cos(radians(28.5355161)) *
               cos(radians(latitude)) *
               cos(radians(longitude) - radians(77.39102649999995)) +
               sin(radians(28.5355161)) *
               sin(radians(latitude))
             )
           ) AS distance
      FROM businesses
    HAVING distance < 100
  ORDER BY distance DESC LIMIT 0,10";
$result = mysql_query($sql, $link);
while ($row = mysql_fetch_assoc($result)) {
    $arr[] = $row;
}
echo '<pre>';
print_r($arr);
echo '</pre>';
请尝试以下方法:


那么问题是什么呢?记录的数量或运行查询所用的时间?为什么使用have而不是WHERE?@ajmedway的问题是没有记录,使用mysql运行查询时没有返回这4条记录_query@MohdSayeed在这里输入代码是您实际代码的一部分,还是由堆栈编辑器引起的?我打赌是后者。@mapek请看这里:WHERE子句要求条件是表中的列,但HAVING子句可以同时使用列和别名。这是因为WHERE子句在select之前过滤数据,但在select之后使用子句过滤数据。如果有任何错误,则会抛出错误,而且如果这是他们实际代码的一部分,他们的查询甚至无法工作。我肯定是堆栈问题编辑器把它放在那里。@Fred ii-是的,正如我所说:这应该会导致错误。这个问题还没有被编辑@阿杰梅德韦:是的,我已经像你上面提到的那样跑步了。mysql端没有错误,甚至返回了一条记录。
SELECT * , (3959 * acos(cos(radians(28.5355161)) * `enter code here`cos(radians...
$sql = "
    SELECT *,
           (3959 *
             acos(
               cos(radians(28.5355161)) *
               cos(radians(latitude)) *
               cos(radians(longitude) - radians(77.39102649999995)) +
               sin(radians(28.5355161)) *
               sin(radians(latitude))
             )
           ) AS distance
      FROM businesses
    HAVING distance < 100
  ORDER BY distance DESC LIMIT 0,10";
$result = mysql_query($sql, $link);
while ($row = mysql_fetch_assoc($result)) {
    $arr[] = $row;
}
echo '<pre>';
print_r($arr);
echo '</pre>';