签署"所有"在where子句中,PDO

时间:2017-12-21 06:57:35

标签: php pdo

在where子句中是否有选择all的迹象?我有一个where子句,它基于一个基于登录的变量。 我的问题是我希望在某个用户登录时选择所有内容。

$前缀基于用户是动态的。

("SELECT * FROM tabell WHERE prefix= '$prefix'"); 

2 个答案:

答案 0 :(得分:0)

假设您在会话$_SESSION['user']中拥有待定用户,请尝试以下操作:

$where = (isset($_SESSION['user']) && $_SESSION['user']=='certain-user') ? '':"WHERE prefix= '$prefix'";
$sql ="SELECT * FROM tabell $where";

答案 1 :(得分:0)

因此,根据我们在评论部分中的讨论,我试着为您提供有关如何解决此问题的一些想法。

我认为您可以做的最好的事情之一是创建一个数组,其中应该应用异常的所有用户。这就是为什么我问你是否有办法从数据库中获取所有这些用户。那本来是完美的。但由于它似乎不是这样,我认为你必须手动维护阵列。

类似的东西:

$usersToCheck = array("Username1", "Username2", "Username3", "Username4");等等......

然后,在查询数据库时,请执行以下操作:

if (in_array($_SESSION["username"], $usersToCheck)) {
    $query = "SELECT * FROM table1";
}
else {
    $query = "SELECT * FROM table1 WHERE prefix = :prefix";
}

我认为这是实现您想要的最简单方法之一。如果有可能维护你想要从数据库中放入数组的用户,你甚至可以用PHP生成这个数组,你不必手动完成。

解决方案2:

你说:“检测用户不是probs,它是通过会话完成的。”

我不确定你的意思。但是如果有类似$_SESSION["isSpecialUser"]标志的东西,那么只需将这个用于if / else条件,如:

if($_SESSION["isSpecialUser"] == 1) {
    $query = "SELECT * FROM table1";
}
else {
    $query = "SLEECT * FROM tabl1 WHERE prefix = :prefix";
}

我希望它对你有所帮助。如果您有任何疑问,请随时询问:)