<?php
//////////数据库配置////////
$test = array(
"DB_HOST"=>"localhost",//数据库服务器地址
"DB_NAME"=>"demo",//数据库名称
"DB_USER"=>"root",//数据库用户名
"DB_PWD"=>"",//数据库 密码
"DB_PORT"=>"3306",//数据库port
"DB_TABLE"=>"message"
);//*/
///////////查看数据库有多少条信息//////////
class numysql{
     function numysql(){
        $numysql = mysql_query("select * from $test['DB_TABLE']");
        $num = mysql_num_rows($numysql);
        echo "共".$num."条信息";
    }
}$num = new numysql();
$num->numysql();?>
为何$test['DB_TABLE']会出错,是不是要设置全局变量????? 

解决方案 »

  1.   

    <?php
    //////////数据库配置////////
    $test = array(
    "DB_HOST"=>"localhost",//数据库服务器地址
    "DB_NAME"=>"demo",//数据库名称
    "DB_USER"=>"root",//数据库用户名
    "DB_PWD"=>"",//数据库 密码
    "DB_PORT"=>"3306",//数据库port
    "DB_TABLE"=>"message"
    );//*/
    ///////////查看数据库有多少条信息//////////
    class numysql{
         function numysql(){
            global $test;
            $numysql = mysql_query("select * from $test['DB_TABLE']");
            $num = mysql_num_rows($numysql);
            echo "共".$num."条信息";
        }
    }$num = new numysql();
    $num->numysql();?>
      

  2.   

    请问$GLOBAL  和global 在此有什么区别
      

  3.   

    目的是一样的,都是为了在函数作用域内访问全局变量,你可以根据实际情况或个人习惯来决定使用哪一种方法,$GLOBALS数组适合在函数需要偶尔操作全局变量的时候;global关键字可以做到一次声明多次使用的目的,适合在函数中需要用到很多次的情况,一旦在函数中将某个变量声明为全局变量以后,可以像操作局部变量一样使用。这个应该不难理解,你仔细考虑下。
      

  4.   

    虽然不一定和你的问题有关系,但我建议$test['DB_TABLE']写成{$test['DB_TABLE']};或者转成非数组变量
    数组变量用于""内尤其是sql语句很容易出现难察觉的问题