我想创建一个公共函数,我从数据库中选择用户行“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.';
}
}
答案 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);