mysqli bind_param - 变量范围问题?

时间:2013-07-26 01:53:25

标签: php session mysqli global

我有一个php include文件,function.php包含以下代码片段:

function check_login($mysqli) {
   // Check if all session variables are set
   if(isset($_SESSION['user_id'], $_SESSION['username'])) {
     $user_id = $_SESSION['user_id'];// current value will be 9
     $username = $_SESSION['username'];


     if ($stmt = $mysqli->prepare("SELECT password FROM members WHERE user_id = ? LIMIT 1")) { 
        $stmt->bind_param('i', $user_id);
        $stmt->execute();
        $stmt->store_result();
        //
        //
        //
        return true;
     }
   }
}

在另一个文件test.php中,我执行

if(check_login($mysqli) == true) //......

然后在test.php中进一步向下,我设置了变量$ user_id

的值
$user_id = "5";

现在问题是,因为$ user_id已经在我的functions.php文件中定义为会话的user_id的值,所以它会覆盖实际的会话数据。

这几乎就像test.php中的$ user_id将变量视为全局变量,这会导致会话的user_id也发生变化。

为什么会这样?

1 个答案:

答案 0 :(得分:0)

感谢您的帮助!我终于弄明白了。 Register_globals设置为on。卫生署!