我在php中编写了如下代码
<?php
global $server ,$username ,$password ,$database;
$server ="localhost:3306";
$username="user";
$password="pass";
$database="dbname";
function connectToDB()
{
mysql_connect($server,$username,$password) or die ("can't connect to server");
mysql_select_db($database) or die ("can't select database");
}
?>
但是我不能访问函数中的那些变量,我的问题是什么?
即使没有全局关键字,我也无法访问这些变量。
global
的意思是"从全局范围获取此变量",而不是"使此变量在所有函数中可用"。你在函数内部使用它,而不是在函数外部使用它。
参见文档中的示例
<?php
$server ="localhost:3306";
$username="user";
$password="pass";
$database="dbname";
function connectToDB()
{
// Global used INSIDE function
global $server ,$username ,$password ,$database;
mysql_connect($server,$username,$password) or die ("can't connect to server");
mysql_select_db($database) or die ("can't select database");
}
?>
您必须在函数内部声明全局变量:
function connectToDB() {
global $server, $username, $password, $database;
etc...
}
使用全局变量不是一个好的做法,因为它们可以在意外的地方进行修改,从而产生难以跟踪的错误。一个更好的方法是将您需要的变量传递到您的函数中,如下所示:-
$server ="localhost:3306";
$username="user";
$password="pass";
$database="dbname";
connectToDB($server, $username, $password, $database);
function connectToDB($server, $username, $password, $database)
{
mysqli_connect($server,$username,$password) or die ("can't connect to server");
mysqli_select_db($database) or die ("can't select database");
}
<?php
function connectToDB()
{
global $server ,$username ,$password ,$database;
$server ="localhost:3306";
$username="user";
$password="pass";
$database="dbname";
mysql_connect($server,$username,$password) or die ("can't connect to server");
mysql_select_db($database) or die ("can't select database");
}
?>