2011-08-09 197 views
1

我正在用PHP + mysql在FuelPHP中創建一個項目。 我有這個數據庫查詢(我沒有使用他們內置的查詢生成器,因爲它只是一個複雜的查詢屁股疼痛)。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查詢,所以任何幫助,將不勝感激。

謝謝。

+0

你可以做一個var_dump($ result)並告訴我們輸出是什麼? – Terrik

+0

我得到以下內容:int(2) – G33kCentric

+0

向我們展示了創建查詢的所有代碼塊,運行它,並且'var_dump'的結果是 – jondavidjohn

回答

0

您可能想要使用數據庫結果中的as_array方法。或者看看這裏:http://fuelphp.com/docs/classes/database/usage.html#results

+0

as_array方法不起作用。它是我用於燃料中所有數據庫使用的默認方法。 – G33kCentric

+0

你可以回顯\ DB :: last_query();並查看執行的查詢是否確實是正確的? –

1

您需要通過DB::SELECT作爲DB::query()的第二參數。