php where 优先,php – 使用WHERE选择所有内容

我目前正在开发一个存在多个访问权限的

PHP项目.逻辑很简单:

– 当您的访问级别为2时,您只能看到自己项目的列表

– 当您的访问级别为3时,您可以看到所有项目

所以在SQL中:

第一:

SELECT project_name FROM projects

第二个:

SELECT project_name FROM projects WHERE user_id = user_id

问题是我正在使用带有预处理语句的PDO,并且这些查询在脚本中执行多次.这是它的样子:

if ($_SESSION['access_level'] == 3) {

$sql = "SELECT project_name FROM projects";

} else {

$sql = "SELECT project_name FROM projects WHERE user_id = ?";

}

$res = $db->prepare($sql);

// Some more PHP

if ($_SESSION['access_level'] == 3)

$res->execute();

else

$res->execute(array($_SESSION['user_id']));

正如我在脚本的多个部分中这样做,它变得一团糟.有一个更好的方法吗?就个人而言,我在想一个WHERE子句,其中每个记录都被选中.这样就可以在脚本开头了:

if ($_SESSION['access_level'] == 3)

$id = *;

else

$id = $_SESSION['user_id'];

现在查询更容易:

$res = $db->prepare("SELECT project_name FROM projects WHERE user_id = ?");

$res->execute(array($id));

(现在,当您的访问级别为3时,它将获取所有记录,但只有当您的级别为2时才会获得自己的记录)

这看起来像一个漂亮的转储解决方案,因为我并没有真正使用WHERE子句如何使用它.此外,使用*是不可能的.

什么是最好的选择?

谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值