0

我有一个 php 网页,它可以找到作为输入提供的 1 公里纬度和经度半径内的所有用户。lat 和 long 作为数据库的输入,它生成一个包含 10 个用户的列表作为输出。我想在检索到他们的设备 ID 后向这个生成列表的每个用户发送一条消息。但我不能这样做。请帮忙

$sql = "SELECT number, userID, 
( 6371 * acos( cos( radians(19.143) ) 
               * cos( radians( latitude ) ) 
               * cos( radians( longitude ) 
                   - radians(72.831) ) 
               + sin( radians(19.143) ) 
               * sin( radians( latitude ) ) 
             )
) AS distance 
FROM users
WHERE device = 'android' 
HAVING distance < 2 
ORDER BY distance;";

$result = mysql_query($sql,$link);

if (mysql_num_rows($result) != 0) 
{
    while($row = mysql_fetch_assoc($result))
    {
                //send notification code
    }
}

当我执行此代码时,出现错误

mysql_fetch_assoc() 期望参数 1 是资源,字符串在..

请帮忙。提前致谢。

4

3 回答 3

0

请试试这个

mysql_fetch_array($result,**MYSQL_ASSOC**)

其中:

mysql_fetch_assoc()

它可能会解决您的问题

于 2013-01-02T14:30:25.283 回答
0

首先检查存在或结果

if (!$result) {
    echo mysql_error();
    exit;
}

如果它退出然后调试您的查询。

于 2013-01-02T14:50:29.430 回答
-1

首先想到:ORDER BY distance;";会给出错误,尝试:ORDER BY distance ASC"; 所以我认为您的结果中有字符串-错误消息-您可以尝试mysql_error()在获取结果之前检查是否为空。

以上假设 - 连接有效且 $link 设置

第二个想法:根据: http: //php.net/manual/en/function.mysql-query.php

**The query string should not end with a semicolon. 

查询中的数据应正确转义。**

于 2013-01-02T14:17:14.250 回答