2017-12-21 2 views
0

Gibt es ein Zeichen für die Auswahl aller in einer Where-Klausel? Ich habe eine where-Klausel, die auf einer Variablen basiert, die auf dem Login basiert. Mein Problem ist, dass ich mit dem gleichen wo alle auswählen möchten, wenn ein bestimmter Benutzer angemeldet ist.Zeichen für "alle" in WHERE-Klausel, PDO

Das $ Präfix ist dynamisch basierend auf Benutzer.

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

Vor allem, stellen Sie sicher, dass Sie über SQL-Injection wissen und wie man sie verhindert (Ihre Abfrage scheint nicht sicher zu sein, besuchen http: // bobby- tables.com um zu erfahren, wie man SQL Injection verhindert. Warum machst du nicht einfach einen 'if/else' Zustand? Beispiel: WENN special_user_name der angemeldete Benutzer ist, dann führe die Abfrage ohne den 'WHERE'-Teil durch, ansonsten tu es mit. – Twinfriends

+0

erstens, das ist ein Teil einer vorbereiteten PDO-Anweisung .. zweitens, ich habe bounch von Benutzer und das wäre eine Menge Fragen dann. Vielleicht ist das der einzige Weg zu gehen, aber ich frage nach einer anderen Lösung. – Kalabalik

+1

Dies kann nicht Teil einer vorbereiteten Aussage sein. Wir verwenden Platzhalter in vorbereiteten Anweisungen, nicht in Variablen. Also können Sie nicht verstehen, wie sie funktionieren. Wenn Sie Ihre Frage bearbeiten und mir die ganze Frage zeigen wollen, kann ich Ihnen helfen, eine wirklich vorbereitete Aussage zu treffen. Wie viele Benutzer sprechen wir darüber, wo Sie diesen speziellen Fall benötigen würden? – Twinfriends

Antwort

-1

Angenommen Sie haben die Loged Benutzer in einer Sitzung $_SESSION['user'] haben, versuchen Sie dies:

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

So unserer Diskussion Acording wir oben im Kommentarbereich hatte, versuche ich Ihnen einige Ideen zu geben, wie um dieses Problem zu lösen.

Ich denke, eines der besten Dinge, die Sie tun können, ist ein Array mit allen Benutzern erstellen die Ausnahme sollte gelten. Deshalb habe ich Sie gefragt, ob es einen Weg gibt, all diese Nutzer aus der DB zu holen. Das wäre perfekt gewesen. Aber da es nicht so scheint, denke ich, dass Sie das Array manuell pflegen müssen.

Etwas wie:

$usersToCheck = array("Username1", "Username2", "Username3", "Username4"); und so weiter ...

Dann, wenn es um die Datenbank abzufragen kommt, gehen Sie wie folgt vor:

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

denke ich, das ist eine der einfachsten Wege zu erreichen, was Sie wollen. Wenn es möglich ist, die Benutzer, die Sie in das Array einfügen möchten, aus der Datenbank zu verwalten, könnten Sie dieses Array sogar mit PHP generieren, und Sie müssten das nicht manuell tun.

Lösung 2:

Sie sagte: "der Benutzer Erkennung keine probs ist, seine von einer Sitzung durchgeführt."

Ich bin mir nicht sicher, was du damit meinst. Aber wenn es so etwas wie eine $_SESSION["isSpecialUser"] Flagge, dann verwenden Sie einfach diese für die if/else Zustand wie:

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

Ich hoffe, dass es Ihnen geholfen. Wenn Sie irgendwelche Fragen haben, zögern Sie nicht, jederzeit zu fragen :)

+0

Danke für Ihre Freude Antwort ... Um zu klären In der DB habe ich Abteilungsleiter, sagen wir "aaa" .. Und wenn der Benutzer dann zu "aaa" gehört, dann stell das in eine WO ... Nochmals vielen Dank! – Kalabalik

+1

@Kalabalik Oh, das macht die ganze Sache viel einfacher! Dann können Sie einfach Ihre Datenbank nach allen Benutzern abfragen, die zu 'aaa' gehören, ihre Namen in ein Array setzen und meine Lösung # 1 nehmen. Da Sie dann das Array $ usersToCheck nicht manuell füllen müssen, können Sie es aus einer DB-Abfrage füllen. Außerdem können Sie so n-Benutzer zu aaa hinzufügen, ohne dass Sie das ganze Array ständig ändern müssen. – Twinfriends

+1

Ja, das ist ein Weg zu gehen ... Danke, ich werde überlegen was mir am besten passt :) – Kalabalik