我正在使用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(结果)显示行数,即2.
但是我无法对待,或将此结果转换为数组,所以我不能
foreach($result as $row) { echo $row['id'] . ' + ' . $row['D']}
或类似的东西。
如果我粘贴此代码并将php变量替换为真实值到phpmyadmin,我得到绿色'查询已成功执行'消息但没有返回任何行(应该返回两行,甚至没有'这个'查询返回零行的消息)。 我对这种嵌套/复杂的SQL查询没有太多经验,所以任何帮助都将不胜感激。
感谢。
答案 0 :(得分:1)
您需要将DB::SELECT
作为DB::query()
的第二个参数传递。
答案 1 :(得分:0)
您可能希望从数据库结果中使用as_array方法。或者看看这里:http://fuelphp.com/docs/classes/database/usage.html#results