【问题标题】:calling variable in functions and global variables在函数和全局变量中调用变量
【发布时间】:2011-07-24 13:09:56
【问题描述】:

我正在尝试编写一个连接到数据库并返回一些数据来显示的函数,我有:

function viewer ($view_type){  
    if ($view_type=1){
        $query="SELECT * FROM table WHERE the_id='1234'";
        $run= mysqli_query($dbc, $query) or die....;

调用方式:

include('/../includes/connect.php');
$view= 1;
viewer($view);

这是我得到未定义变量 dbc 错误的地方。 $dbc 变量在 connect.php 中定义,在 include() 中调用。我意识到该函数无法调用 include() 变量。

我做了一些研究,发现我可以将它称为全局变量。但是我对此持谨慎态度,因为 dbc 变量包含敏感的数据库信息:

$dbc=mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

我也尝试将包含添加到函数本身,但是因为我需要在调用函数之前连接到页面上的数据库,所以我收到“变量 DB_HOST 已定义”错误。 将 $dbc 定义为全局变量是否合适?如果不是,我该如何解决?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    我觉得还可以:

    function viewer ($view_type){  
        GLOBAL $dbc; // here is your database connection
        if ($view_type=1){
            $query="SELECT * FROM table WHERE the_id='1234'";
            $run= mysqli_query($dbc, $query) or die....;
    

    【讨论】:

    • 你不需要把全局 $dbc 放在函数里面。外面好多了
    • @George,您应该在PHP variables scopes 上阅读更多内容。您是否尝试过您提供的服务?
    • Ups,我现在试过了。 +1 为正确答案。我记得我使用了我的方法,但不像在这种情况下,在函数中。对不起。
    • 没关系 :-) 我已经写了 5 年 global 后面的关键字 :))
    • 大家好,感谢您的完美回答。只是想知道将 $dbc 设置为全局变量是否存在任何安全风险?
    【解决方案2】:

    放入您当前的文件(其中称为 viewer())

    global $dbc; 
    

    在包含你的连接脚本之后

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多