Überprüfen des Werts in einem Array innerhalb einer SQL-Abfrage mit WHERE-Klausel

Lesezeit: 2 Minuten

Benutzeravatar von Robbie Dc
Robbie DC

Ich möchte wissen, ob dies in SQL (unter Verwendung von PHP als Serverseite) praktisch möglich ist, wo Sie ein Array von Werten (Zahlen) haben und versuchen, Daten basierend auf Werten in diesem Array abzurufen.

Ich habe eine SQL-Tabelle:

posts(
    id int(11) primary key,
    posts varchar(140),
    user_id int(11) foreign key
);

Ich schreibe jetzt eine Abfrage, um “Posts” abzurufen:

$query="SELECT * FROM posts WHERE user_id=(**Array of select user_id's**)";

Gibt es eine eingebaute SQL-Funktion, um Werte in einem Array zu überprüfen? oder sollte ich dafür PHP verwenden?

Ich versuche tatsächlich, das Twitter-Modell zu implementieren, bei dem Beiträge von Personen angezeigt werden, denen wir folgen.

  • SELECT * FROM posts WHERE user_id IN (1,2,3);

    – Devart

    25. November 2011 um 13:59 Uhr

Ja, das ist problemlos möglich. Muss man sich anschauen Die IN-Funktion von MySQL

Ihre Abfrage wäre so etwas wie

SELECT * FROM posts WHERE user_id IN (1,2,3,4,5,6)

Sie können das Bit zwischen den Klammern in PHP mit erstellen implodieren()

Benutzeravatar von Hikaru-Shindo
Hikaru-Shindo

SQL kann PHP-Arrays nicht parsen. Versuche dies:

$query="SELECT * FROM posts WHERE user_id IN ({implode(',', $userIDarray)})";

  • Achten Sie nur darauf, dass die Array-Werte für die SQL-Injection bereinigt wurden.

    – FtDRbwLXw6

    25. November 2011 um 14:01 Uhr

  • Natürlich… Ich für mich würde vorbereitete Statements verwenden, aber das ist nicht die Frage 😉

    – Hikaru-Shindo

    25. November 2011 um 14:02 Uhr

  • Welche sanitären Funktionen werden benötigt, um ein Array zu desinfizieren?

    – Robbie DC

    25. November 2011 um 14:18 Uhr

  • in diesem Fall sind nur ganzzahlige Werte zulässig. Sie müssen also in jedem Array-Element nach ganzzahligen Werten suchen. Wenn Sie dieses Array nicht aus Benutzereingaben generieren (oder die Werte der Arrays keine enthalten), können Sie dies überspringen.

    – Hikaru-Shindo

    25. November 2011 um 14:22 Uhr

  • Sie haben ein ) nach der Variable vergessen

    – Wouter

    20. März 2017 um 12:49 Uhr

Schauen Sie sich diese Seite an: WO … IN. Sie können den IN-Operator verwenden, um zu prüfen, ob ein bestimmter Wert in einer Werteliste vorhanden ist.

Emys Benutzer-Avatar
Emy

Ja, Sie müssen die folgende Syntax verwenden

SELECT 'value'
 IN (array)

1433900cookie-checkÜberprüfen des Werts in einem Array innerhalb einer SQL-Abfrage mit WHERE-Klausel

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy