2011-09-20 5 views
0

Comment est-il possible de récupérer mysql_query à partir d'une fonction? Par exemple:php return mysql_query

class A() { 
    ... 
    function getAll($l=1) { 
     ... 
     $result = mysql_query($query); 
     return $result 
    } 
    ... 
} 

$a = new A(); 
$r = $a -> getAll(2); 
while ($row = mysql_fetch_assoc($r)) { 
    // do something 
} 

Ce code ci-dessus ne fonctionne pas lorsque je renvoie $ result de la fonction. Cependant, lorsque j'utilise la fonction mysql_fetch_assoc dans la fonction getAll, cela fonctionne parfaitement. Donc, fondamentalement, ma question est de savoir comment retourner un ensemble de résultats mysql d'une fonction?

** EDIT **

je reçois en fait aucune erreur. L'instruction while utilisée ci-dessus ne sera simplement pas exécutée. Mais la requête fonctionne parfaitement lorsque je l'exécute depuis la fonction getAll.

+0

Qu'est-ce qui ne fonctionne pas? Avez-vous une sorte d'erreur? Aucune ligne n'a été renvoyée? – regality

+0

Vous avez une erreur? Avez-vous besoin d'un ';' après 'return $ result;'? – labue

+0

Modifiez votre ligne 'mysql_query' pour voir si elle ne fonctionne pas correctement:' $ result = mysql_query ($ query) ou trigger_error (mysql_error()); ' –

Répondre

3

Ne pas retourner la ressource de résultat de la requête, mais renvoient les données extraites de cette ressource:

$data = array(); 

while ($row = mysql_fetch_assoc($result)) { 
    $data[] = $row; 
} 

return $data; 
1

Absolument cela fonctionne.

Faites un var_dump($r) pour être sûr de disposer d'une ressource. Si non, vérifiez votre SQL. Il peut y avoir une erreur.

tourner également sur d'autres rapports d'erreur en haut de votre script (ainsi que la vérification mysql_error) pour de meilleurs indices sur ce qui ne va pas:

ini_set('display_errors', true); 
error_reporting(E_ALL); 

Vous avez modifié une grande partie de votre code de sorte qu'il est difficile de étudier plus. Assurez-vous que votre méthode ne ferme pas la connexion mysql.