PDO登录页面,在用户连接时选择指定的行并对其执行某些操作

时间:2014-01-21 21:17:13

标签: php mysql login pdo

我想创建一个公共函数,我从数据库中选择用户行“privilege”。如果“特权”是“代理人”,那么回应一些东西,如果“特权”是“特许经营者”,则回应别的东西。所以我想弄清楚这里有什么问题。我不确定我是否在我的SQL查询中选择了正确的东西......我有点被困在这里!任何帮助都会很好!!

public function Access(){
        $st = $this->db->prepare('SELECT * FROM users WHERE privilege=?');
        $st->bindParam(3, $privilege);
        $st->excute();

        if($st->rowCount() == 1 && $privilege == 'agent') {
            echo 'Vous etes un agent.';
        } elseif ($st->rowCount() == 1 && $privilege == 'concessionnaire') {
            echo 'Vous etes un concessionnaire.';
        }
    }

1 个答案:

答案 0 :(得分:0)

有一个小问题......如果您事先知道该权限是什么,为什么要等到查询后才能验证该值?我认为实际上你想要的查询是这样的:

$st = $this->db->prepare('SELECT privilege FROM users WHERE id=?'); // id, or your unique column

然后,bindValue到您的参数。由于该语句不会被重用,因此无需绑定到param。

$id = ''; // just make sure $id exists, as $privilege should in your example
$st->bindValue(1, $id); // since there's only one parameter, don't write 3
$st->excute();

您也可以一步完成:

$st->excute(array($id));

否则,即使像Marc B评论的那样使用rowCount()两次效率也不高,这可能会有效。然后,检索你的价值:

$privilege = $st->fetch(PDO::FETCH_COLUMN);