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 変数を実際の値に置き換えると、緑色の「クエリは正常に実行されました」というメッセージが表示されますが、行は返されません (2 行が返されるはずです。「このクエリはゼロを返しました」というメッセージさえありません)。行のメッセージ)。この種のネストされた/複雑なSQLクエリの経験はあまりないので、助けていただければ幸いです。

ありがとう。

4

2 に答える 2

1

DB::SELECTの2番目のパラメータとして渡す必要があります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 に答える