我有一个完美的作品一个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