1

我正在用 php + mysql 在 FuelPHP 中创建一个项目。我有这个数据库查询(我没有使用他们内置的查询生成器,因为它只是复杂查询的麻烦)。

$sql = DB::query('
    SELECT game_id, lati, longi,
       acos(sin    (' . $lat .  ') 
     * sin (radians(    lati     ))
     + cos         (' . $lat .  ') 
     * cos (radians(lati)) 
     * cos (radians(longi) - ' . $lon . ')) 
     *' . $R . ' AS D 
        FROM (
            SELECT game_id, lati, longi
            FROM games 
            WHERE lati > ' . $minLat . 
        ' AND lati <' . $maxLat . 
        ' AND  longi > ' . $minLon . 
        ' AND longi < ' . $maxLon . 
        ') AS firstcut
            WHERE 
                acos(sin    (' . $lat .  ') 
     * sin (radians(    lati     ))
     + cos         (' . $lat .  ') 
     * cos (radians(lati)) 
     * cos (radians(longi) - ' . $lon . ')) 
     *' . $R . '<' . $rad . 
     ' ORDER BY D');

如果我执行此操作并 print_r(result) 显示行数,即 2。

但是我不能处理或将此结果转换为数组,所以我不能

foreach($result as $row) { echo $row['id'] . ' + ' . $row['D']} 

或类似的东西。

如果我将此代码粘贴到 phpmyadmin 中并用实际值替换 php 变量,我会收到绿色的“查询已成功执行”消息,但没有返回任何行(应该返回两行,甚至没有“此查询返回零”行的消息)。我对这种嵌套/复杂的 sql 查询没有太多经验,因此将不胜感激。

谢谢。

4

2 回答 2

1

您需要DB::SELECT作为DB::query().

于 2011-08-26T17:33:46.577 回答
0

您可能希望使用数据库结果中的 as_array 方法。或者看看这里: http: //fuelphp.com/docs/classes/database/usage.html#results

于 2011-08-10T09:05:46.053 回答