我在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");
}
?>
但是我无法在我的函数中访问那些变量我的问题是什么?
即使没有全局关键字,我也无法访问这些变量。
答案 0 :(得分:4)
global
表示“从全局范围获取此变量”而不是“在所有函数中使此变量可用”。你在函数内部使用它,而不是在它们之外。
请参阅example in the documentation
<?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");
}
?>
答案 1 :(得分:3)
您必须在函数中声明变量global:
function connectToDB() {
global $server, $username, $password, $database;
etc...
}
答案 2 :(得分:2)
使用全局变量不是一个好习惯,因为它们可以在意外的位置进行修改,从而导致难以跟踪的错误。更好的方法是将所需的变量传递到函数中,如下所示: -
$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");
}
答案 3 :(得分:1)
<?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");
}
?>