代码之家  ›  专栏  ›  技术社区  ›  Jeff LaFay

使用Require_once()正确包含数据库连接变量

  •  8
  • Jeff LaFay  · 技术社区  · 14 年前

    我是一个php新手(但长期从事其他语言的开发),我正在尝试“php、MySQL和JavaScript”中的一些db连接示例。它显示了一个包含db连接变量(servername、username、password、database等)的示例文件。我有一个php文件,其中有一些我编写的函数,其中一个有一些SQL查询。不管出于什么原因,在该文件中调用require\一次都不会输出任何错误(我有E\ ALL config'd),但是我的数据库php文件中的那些变量是空的。

    这是我正在做的一个例子

    分贝_登录.php

    <?php
        $db_server = 'localhost';
        // ....
    ?>
    

    函数.php

    <?php
        require_once('db_login.php');
    
        function myfunction() {
            echo "$db_server";
            // ...
        }
    ?>
    

    你说我疯了,但这难道不简单到可以工作吗?

    3 回复  |  直到 13 年前
        1
  •  6
  •   wuputah    14 年前

    在中声明的变量 db_login.php 是全球性的。为了在函数中访问它们,需要使用 $GLOBALS 变量,例如。 $GLOBALS['db_server'] ,或使用 global 关键字,例如。 global $db_server .

        2
  •  7
  •   Peter Ajtai    14 年前

    PHP function scope 与Javascript类似,因此您不能访问 db_login.php 内部功能 functions.php

    处理这个问题有多种方法。由于您可能使用了全局服务器名 constants 可能是个好办法,因为没有什么能改变它们。

    <?php
        require_once('db_login.php');
          // You have access to $db_server here.
          // Create a constant.
        define("DB_SERVER", $db_server);
    
        function myfunction() {
              // Using a constant. Note that there is no "$".
            echo DB_SERVER ;
              // Constants are interpreted inside double quotes too
            echo "\nMy constant is DB_SERVER";
            // ...
        }
    ?>
    

    myfunction($variable);
    
      // by value
    function myfunction($pass_variable_to_me_by_value)
    {
        echo $pass_variable_to_me_by_value;
        // ...
    }
    
    function myfunction(& $pass_variable_to_me_by_reference)
    {
        echo $pass_variable_to_me_by_reference;
        // ...
    }
    

    对你来说 ,使用 global 关键字或 $GLOBALS essentially the same as passing by reference. ,但如果不是从全局范围传递,则它们可能非常不同(例如,在类中或从另一个函数中)。

        3
  •  5
  •   Felipe Cardoso Martins    14 年前

    在函数“myfunction”中,您无权访问这些变量。。。

    详见: http://php.net/manual/en/language.variables.scope.php