0

我正在使用 Windows 7 Ultimate、SQL Server 2008 R2、php 5.2.6 我是 PHP 新手。我有一个名为 globalvars.php 的文件,其中定义了全局变量。

全局变量.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 数据库的片段函数调用全局变量:

数据库.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() 未传递任何消息。谢谢你。

4

2 回答 2

1

这是因为您在声明全局变量之前database.php包含了该文件。只需移动到声明的底部。include_once('database.php');

在 PHP 中,当您使用include另一个 PHP 文件时,会立即解析并执行该文件。您应该在制作文件之前声明您需要的任何变量。include_once('database.php');

于 2012-12-11T02:40:34.833 回答
0

你在浏览器中调用哪个页面?看起来你会在浏览器中调用 database.php 文件来运行该函数。

话虽如此,在 database.php 文件中,您应该在文件开头包含 globalvars.php。

数据库.php

include_once('globalvars.php');
// rest of your code...
于 2012-12-11T07:57:10.813 回答