PHP中变量范围的问题

时间:2009-08-27 15:29:23

标签: php mysql

我写了这段代码

require('Database.class.php');



     function get_info (){



        $db = new Database($config['server'], $config['user'], $config['pass'], $config['database'], $config['tablePrefix']);
        $db->connect();


        $sql = $db->query('SELECT * FROM ja_cat');
        while ($options = $db->fetch_array($sql)) {

            $cat[].=" ".$options['title'];
        }
        $db->close();
        return $cat;

然后我得到了这个Mysql错误

Mysql错误:未选择数据库。

但是当我把require指令放在函数中时,它可以正常工作

3 个答案:

答案 0 :(得分:4)

我的猜测是Database.class.php创建了一些可能在全局范围内依赖的变量。如果你在函数内部需要它并且它有效,那就支持这个理论。那是你的班级吗?你能改变吗?你可以发布吗?

基本上$ config需要函数内部的全局限定符。

答案 1 :(得分:3)

将此设为第一行 IN 您的get_info()函数:

global $config;

此外,您可能希望在代码开头的函数外部定义$ db,然后在结束时关闭连接,而不是必须多次重新连接。

答案 2 :(得分:2)

您必须将全局变量$config导入函数范围:

function get_info() {
    global $config;
}