我有一個完美的作品一個PHP數據庫連接變量:不能訪問嵌套函數
$con = mysqli_connect("localhost","username","password","database");
$result = mysqli_query($con, $query);
我還可以把它當作一個參數訪問它的功能:
function test($con, $args) {
$query10 = "select name from table where id = '$args[0]'";
$result10 = mysqli_query($con, $query10);
}
test($con, array('value1','value2'));
然而,當我嘗試訪問從由另一個函數調用的函數的連接:
mainFunction() {
test($con, array('value1','value2'));
}
我得到「faultCode0faultStringWarning:mysqli_query()期望參數1爲mysqli,null給出」。
將變量傳遞給mainFunction,然後傳遞給第二個函數,但它會創建非常不可讀的代碼,並且參數太多,因爲這同樣適用於其他所有變量。
所以我嘗試使用全局變量,但由於某些原因,他們不工作。運行
$a = 1;
$b = 2;
function Sum()
{
global $a, $b;
$b = $a + $b;
}
Sum();
echo $b;
回報2,這使我懷疑的東西與PHP配置是錯誤的,因爲根據PHP文檔(http://php.net/manual/en/language.variables.scope.php)它應該返回3.
我怎樣才能得到全局變量工作還是有另一種方法來訪問嵌套函數的變量,而無需多次傳遞它們?
PHP版本是5.3.10-1ubuntu3.8,也安裝了Zend框架。如果您需要任何其他信息,請讓我知道。
請參閱http://3v4l.org/dGpDl,代碼有效,所以您對該問題的前提是錯誤的。你既可以使用全局變量,也可以傳遞變量,沒有其他辦法。全球通常都會皺眉。你應該圍繞傳遞參數設計你的應用程序。 OOP可以在這裏幫助很多,而不是純粹的程序功能。 – deceze
@deceze它永遠不會像OP在他的服務器上體驗到的那樣返回2 –
@DanyP正確。 – deceze