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

博客讨论了在PHP项目中根据用户访问权限动态构建SQL查询的问题。作者提出了一个解决方案,通过预处理语句和条件判断来简化代码,以避免在脚本中多次重复相同的查询。他们考虑了两种情况:访问级别为2时只显示用户自己的项目,访问级别为3时显示所有项目。最后,作者提出了一种改进的方法,通过在WHERE子句中使用条件变量来统一查询。
摘要由CSDN通过智能技术生成

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

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子句如何使用它.此外,使用*是不可能的.

什么是最好的选择?

谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值