2010-07-07 67 views
0

訪問數據我有這樣的功能:初學者PHP的問題 - 從功能

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']; 

這導致$值成爲一個陣列。我想從函數外部訪問這個數組。我試圖使用上面的代碼的最後一行(即回聲...),但這不起作用。我應該怎麼做?

回答

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

哈哈,就像我按下後,5個答案都基本相同,在哪裏,toooo慢手指:) – Luke 2010-07-07 11:41:52

7

您需要return a value從你的函數:

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']; 

注意這些功能可能會在不同的地方失敗了,所以你不應該總是假設返回值將包含來自mysql_fetch_assoc結果。要做到這一點

的一種方式(很多的一種方式)是使用前測試返回值:

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是另一種方式來處理錯誤。

2

return關鍵字在你的函數:

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

這可能有助於

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

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

    $b = $a + $b; 
} 

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

以這種方式使用全局是不好的做法 – DRL 2010-07-07 11:41:22

0

我假設你已經是功能外定義$價值?否則,您需要將其返回,以便您可以在函數外部訪問它。

2

您可以從函數返回值 - 在這裏我改寫爲你:

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

的價值迴歸

return $value 

或使用globals。但是全局變量不再是現有技術,不應該使用。