Config.php:
$settings = array();
$settings['mysqlhost'] = 'localhost'; // Mysql hostname
$settings['mysqluser'] = '**'; // Mysql username
$settings['mysqlpass'] = '**'; // Mysql password
$settings['mysqldatb'] = '**'; // Mysql databasefunctions.php:
include_once('config.php');
function si_connect_db(){
$connection = mysql_connect($settings['mysqlhost'], $settings['mysqluser'], $settings['mysqlpass']);
$selectdb = mysql_select_db($settings['mysqldatb'], $connection);
if($connection){
if($selectdb){
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}现在,当我这样做的时候,例如:
include_once('functions.php');
si_connect_db();我没有联系上..。我该怎么做呢?
发布于 2011-02-26 21:51:39
默认情况下,在函数外部声明的PHP变量在函数内部不可见。
如果您在函数外部声明了一个变量,并希望它在该函数内可见,则必须使用global关键字:
function si_connect_db(){
global $settings; // Make $settings visible inside the function
$connection = mysql_connect($settings['mysqlhost'], $settings['mysqluser'], $settings['mysqlpass']);
$selectdb = mysql_select_db($settings['mysqldatb'], $connection);
...有关更多信息,请查看手册的部分。
发布于 2011-02-26 21:50:56
您应该将$settings设置为全局变量
function si_connect_db(){
global $settings;http://php.net/manual/en/language.variables.scope.php
发布于 2011-02-26 21:52:39
您必须在函数中使用global关键字,才能让函数知道$settings是全局的。
最好使用define()来定义全局常量,例如:
define(MYSQLHOST, 'localhost');这样,您就不必使用global关键字来定义配置设置。
https://stackoverflow.com/questions/5127256
复制相似问题