2010-07-07 5 views
0

J'ai cette fonction:Débutant PHP Question - accès aux données de la fonction

function selectValue($test) { 
    $connection = dbConnect(HOST, USERNAME, PASSWORD, DATABASE); 
    $query = "SELECT * FROM table where value = '$test'"; 
    $results = @mysql_query($query, $connection); 
    $value = mysql_fetch_assoc($results); 
} 

selectValue('abcde'); 

echo $value['something']; 

Il en résulte une valeur de $ devenir un tableau. Je voudrais accéder à ce tableau depuis l'extérieur de la fonction. J'ai essayé de le faire en utilisant la dernière ligne de code ci-dessus (c'est-à-dire echo ...) mais cela ne fonctionne pas. Comment dois-je faire cela?

Répondre

4
function selectValue($test) { 
$connection = dbConnect(HOST, USERNAME, PASSWORD, DATABASE); 
    $query = "SELECT * FROM table where value = '$test'"; 
    $results = @mysql_query($query, $connection); 
    $value = mysql_fetch_assoc($results); 
return $value; 
} 


$value = selectValue('abcde'); 

echo $value['something']; 
+0

lol juste comme je l'ai pressé post, 5 réponses tous fondamentalement la même où vers le haut, trop lent doigts :) – Luke

7

Vous devez return a value de votre fonction:

function selectValue($test) { 
    $connection = dbConnect(HOST, USERNAME, PASSWORD, DATABASE); 
    $query = "SELECT * FROM pans where value = '$test'"; 
    $results = @mysql_query($query, $connection); 
    $value = mysql_fetch_assoc($results); 
    return $value; 
} 


$value = selectValue('abcde'); 

echo $value['something']; 

Soyez conscient que la fonction pourrait échouer à divers endroits, vous devriez donc pas supposer toujours que la valeur de retour contiendra le résultat de mysql_fetch_assoc.

Une façon de le faire (une façon de beaucoup) est de tester la valeur de retour avant de l'utiliser:

function selectValue($test) { 
    $value = false; 
    $connection = dbConnect(HOST, USERNAME, PASSWORD, DATABASE); 
    $query = "SELECT * FROM pans where value = '$test'"; 
    $results = @mysql_query($query, $connection); 
    $value = mysql_fetch_assoc($results); 
    return $value; 
}  

if($value = selectValue('abcde')) { 
    echo $value['something']; 
} else { 
    echo "Something went wrong.\n"; 
} 

Exception handling est une autre façon de gérer les erreurs.

2

Mettez le mot-clé return dans votre fonction:

function selectValue($test) { 
$connection = dbConnect(HOST, USERNAME, PASSWORD, DATABASE); 
    $query = "SELECT * FROM pans where value = '$test'"; 
    $results = @mysql_query($query, $connection); 
    $value = mysql_fetch_assoc($results); 
    return $value; // return the value 
} 
-2

Cela peut aider

<?php 
$a = 1; 
$b = 2; 

function Sum() 
{ 
    global $a, $b; 

    $b = $a + $b; 
} 

Sum(); 
echo $b; 
?> 
+1

L'utilisation de globales de cette façon est une mauvaise pratique – DRL

0

Je suppose que vous avez déjà défini la valeur de $ en dehors de cette fonction? Sinon, vous devez le retourner pour pouvoir y accéder en dehors de la fonction.

2

Vous pouvez retourner la valeur de la fonction - ici je vous l'ai récrit:

function selectValue($test) { 
    $connection = dbConnect(HOST, USERNAME, PASSWORD, DATABASE); 
    $query = "SELECT * FROM pans where value = '$test'"; 
    $results = @mysql_query($query, $connection); 
    $value = mysql_fetch_assoc($results); 

    return $value; 
} 


$val = selectValue('abcde'); 

echo $val['something']; 
0

retour la valeur

return $value 

ou utiliser globals. mais les globals ne sont plus un état de l'art et ne devraient pas être utilisés.