我正在使用Windows 7旗舰版,SQL Server 2008 R2,php 5.2.6 我是PHP的新手。我有一个名为globalvars.php的文件,其中定义了全局变量。
globalvars.php
<?
session_start();
include_once('database.php');
//global vars
$_APP["SQL_DB_NAME"]="DB_NAME";
$_APP["SQL_DB_SERVER_NAME"]="SERVER_NAME";
$_APP["SQL_DB_USER"]="USERNAME";
$_APP["SQL_DB_PASS"]="PASSWORD";
$_APP["DATE_FORMAT"] = "d-m-Y";
$_APP["TIME_FORMAT"] = "H:i";
//generic function for SQL composition to avoid 's errors
function SQuoteEx($str)
{
return "'" . str_replace("'","''",$str) . "'";
}
function RemoveSQuoteEx($str)
{
return "'" . str_replace("'","",$str) . "'";
}
?>
我还有一个名为database.php的文件,其中使用连接到SQL Server数据库的代码段函数调用全局变量:
database.php中
function DBConnect($sql,$debug=0)
{
global $_APP;
//connect to db and execute query
$cnn = mssql_connect($_APP["SQL_DB_SERVER_NAME"], $_APP["SQL_DB_USER"], $_APP["SQL_DB_PASS"]) or die(errorHandlingPage(mssql_get_last_message()));
$selected = mssql_select_db($_APP["SQL_DB_NAME"], $cnn) or die(errorHandlingPage(mssql_get_last_message()));
$debug = 0;
//if debug mode echo sql
if ($debug) echo $sql."<br>";
//execute and return rs
$return = mssql_query($sql) or die(errorHandlingPage(mssql_get_last_message()));
if($return){
return $return;
}
}
由于某种原因,database.php文件无法读取全局变量。有什么想法发生了什么? mssql_get_last_message()没有传递任何消息。谢谢。
答案 0 :(得分:1)
这是因为您在声明全局变量之前包含database.php
文件 。只需将include_once('database.php');
移到声明的底部即可。
在PHP中,当您include
另一个PHP文件时,该文件将被立即解析并执行 。在制作include_once('database.php');
文件之前,您应该声明所需的任何变量。
答案 1 :(得分:0)
您在浏览器中调用哪个页面?看起来您将在浏览器中调用database.php文件来运行该函数。
话虽如此,在database.php文件中,你应该在文件的开头包含globalvars.php。
<强> database.php中强>
include_once('globalvars.php');
// rest of your code...