[英]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.