无法在mysql脚本中正确绑定参数

时间:2012-01-06 11:14:24

标签: php mysql prepared-statement

嘿,我正在学习一种查询我的数据库的新方法,因为它意味着更好,更安全,我建立了可以重复使用的预处理语句。

问题是,这是一种不同的方式来看待它,我还没有习惯它,但仍然有一些我不清楚的事情。

所以我的脚本试图将三个段落绑定到一个查询,以允许用户登录我的站点。我使用与以前相同的脚本,这使用了用户名和密码......这很好用:

$query = "SELECT *
            FROM user
            WHERE email = ? AND password = ?
            LIMIT 1";

    if($stmt = $this->conn->prepare($query)) 
    {
        $stmt->bind_param('ss', $un, $pwd);
        $stmt->execute();

        if($stmt->fetch()) 
        {
            //$uid = $stmt->fetch(id);
            //$_SESSION['uid'] = $uid;
            $stmt->close();
            return true;
        }
    }

但是当我检查用户是否是管理员时我根本不喜欢它:

$query = "SELECT *
            FROM user
            WHERE email = ? AND password = ? AND isAdmin = ?
            LIMIT 1";

    if($stmt = $this->conn->prepare($query)) 
    {
        $stmt->bind_param('ssi', $un, $pwd, $isAdmin);
        $stmt->execute();

        if($stmt->fetch()) 
        {
            //$uid = $stmt->fetch(id);
            //$_SESSION['uid'] = $uid;
            $stmt->close();
            return true;
        }
    }

此外,我将isAdmin声明为类的开头的全局私有var,如下所示:

private $isAdmin = "1";

所以是的,我知道我正在测试的用户在数据库上的isActive为1但是当它进入此脚本时它返回false。

就像我说我是这种写作查询风格的新手,所以任何帮助都会很棒。

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

好的,所以我想我已经明白了。我将isActive var添加到正在使用它的函数中,而不是它是全局的,现在它工作正常。

谢谢你的帮助。关于此事的任何其他提示都非常受欢迎!