2010-07-07 54 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。但是全局变量不再是现有技术,不应该使用。