Mysql Результат Возврат Проблема - PullRequest
1 голос
/ 09 августа 2011

Я создаю проект в FuelPHP с php + mysql.У меня есть этот запрос к базе данных (я не использую их встроенный построитель запросов, потому что это просто боль в заднице для сложных запросов).

$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-запросами, поэтому любая помощь будет принята с благодарностью.

Спасибо.

Ответы [ 2 ]

1 голос
/ 26 августа 2011

Вам нужно передать DB::SELECT в качестве второго параметра для DB::query().

0 голосов
/ 10 августа 2011

Возможно, вы захотите использовать метод as_array из результата базы данных.Или посмотрите здесь: http://fuelphp.com/docs/classes/database/usage.html#results

...