我在这里处于学习模式,对 PHP 非常陌生,所以我正在使用代码示例。请原谅我在这里使用“全局”,但我想了解 php 变量范围。
这是 myGlobals.php:
<?php
global $db_server;
// other code not shown
?>
这是connectToDb.php:
<?php
require_once 'myGlobals.php';
// no declared functions in this file, all inline code
$db_server = mysql_connect(.....);
mysql_select_db( "theDatabase", $db_server);
?>
这是 addDbRecords.php:
<?php
require_once 'myGlobals.php';
// other inline code.....
doAddDeleteRecord($db_server);
function doAddDeleteRecord($db_server)
{
//global $db_server;
if( !mysql_query($query, $db_server))
{
// handle the error...
}
}
?>
这是 index.php:
<?php
require_once 'myGlobals.php';
require_once 'connectToDb.php';
require_once 'addDbRecords.php';
// this is simplified, just trying to show that everything in inline code
?>
这是问题所在。当我doAddDeleteRecord($db_server)
在上面的文件 addDbRecords.php 中调用时,$db_server
它是无效的——它是空的——当我调用时mysql_query(.., $db_server, ...)
——这是错误消息:
“警告:mysql_query() 期望参数 2 是资源,在第 29 行的 C:\xampp\htdocs\addDbRecords.php 中给出 null”
所以我尝试在内部使用“全局”声明doAddDeleteRecord()
(上面注释掉)——没有变化。
仍然以mysql_query(...)
NULL 值失败$db_server
。
我知道这项mysql_connect(....)
工作,因为其他代码成功地将我的所有记录从我的数据库中提取出来(使用 SELECT),并且现有记录在浏览器中正确显示。
所以在我看来,用'global'声明的事实$db_server
应该意味着$db_server
一旦mysql_connect(...)
被调用——在我所有文件的文件范围内,它的范围$db_server
将是与我的数据库的有效连接。
我只是想了解php 范围,而不是 OOAD 或其他任何东西(现在)。为什么$db_server()
这里是空的?