2011-08-09 4 views
1

Je crée un projet dans FuelPHP, avec php + mysql. J'ai cette requête de base de données (je n'utilise pas leur constructeur intégré de requête parce que c'est juste une douleur dans le cul pour les requêtes complexes).Mysql Résultat Retour Problème

$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'); 

Si j'exécute cela et print_r (résultat) le nombre de lignes est affiché 2.

-à-dire

Cependant, je ne peux pas traiter ou convertir ce résultat dans un tableau, donc je ne peux pas

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

Ou quelque chose de similaire.

Si je colmate ce code et remplace les variables php par des valeurs réelles dans phpmyadmin, le message vert 'La requête a été exécutée avec succès' mais aucune ligne n'est renvoyée (deux lignes doivent être retournées, il n'y a même pas de ' Cette requête a renvoyé le message zero rows. Je n'ai pas beaucoup d'expérience avec ce genre de requêtes sql imbriquées/complexes, donc toute aide serait appréciée.

Merci.

+0

Pouvez-vous faire un var_dump ($ result) et nous dire ce que la sortie est? – Terrik

+0

Je reçois ce qui suit: int (2) – G33kCentric

+0

montrez-nous tout le bloc de code qui crée la requête, l'exécute, et 'var_dump' est le résultat – jondavidjohn

Répondre

0

Vous pouvez utiliser la méthode as_array à partir du résultat de la base de données. Ou jetez un oeil ici: http://fuelphp.com/docs/classes/database/usage.html#results

+0

La méthode as_array ne fonctionne pas. C'est la méthode par défaut que j'utilise pour toute l'utilisation de la base de données dans le carburant. – G33kCentric

+0

Vous pouvez echo \ DB :: last_query(); et voir si la requête exécutée est réellement la bonne? –

1

Vous devez passer DB::SELECT comme second paramètre pour DB::query().

Questions connexes