簡體   English   中英

在PDO的where子句中簽名“ all”

[英]sign for “all” in where clause, PDO

在where子句中是否有選擇全部的標志? 我有一個where子句,該子句基於基於登錄的變量。 我的問題是,當某個用戶登錄時,我想要在哪里選擇全部。

$ prefix是基於用戶動態的。

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

假設您在會話$_SESSION['user']中有登錄$_SESSION['user'] ,請嘗試以下操作:

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

因此,根據我們上面在評論部分進行的討論,我嘗試為您提供一些有關如何解決此問題的想法。

我認為您可以做的最好的事情之一是創建一個數組,其中包含所有應應用異常的用戶。 這就是為什么我問您是否有辦法從數據庫中獲取所有這些用戶。 那將是完美的。 但是由於似乎並非如此,我認為您必須手動維護該數組。

就像是:

$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:

您說:“檢測用戶不是問題,它是通過會話完成的。”

我不確定您的意思。 但是,如果有像$_SESSION["isSpecialUser"]標志之類的東西,那么只需將其用於if / else條件,例如:

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

希望對您有所幫助。 如果您有任何疑問,請隨時提問:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM