Ich versuche, alle Daten aus meiner Tabelle "Ereignisse" auszuwählen, wenn die "Ereignis-ID" mit der "Benutzer-ID" übereinstimmt. Allerdings bekomme ich einen Fehler 1242 Unterabfrage gibt mehr als 1 Zeile zurück.MySQL-Unterabfragefehler: Unterabfrage gibt mehr als 1 Zeile zurück
$query = "SELECT * FROM events WHERE id = (SELECT event_id FROM booking_dates WHERE user_id = '{$user_id}')";
$event_set = mysqli_query($connection, $query);
Ich verstehe, dass meine Unterabfrage mehrere Zeilen zurückgibt, weil ein Benutzer mehrere Ereignisse besuchen kann. Wie kann ich also meine Abfrage mehrere Zeilen akzeptieren lassen?
Können Sie uns die Struktur booking_dates und events anzeigen lassen, oder zumindest ihre Verknüpfungen (falls vorhanden). Sie müssen mit einem INNEREN JOIN lösen: http://dev.mysql.com/doc/refman/5.7/en/join.html –
** WARNUNG **: Wenn Sie mysqli verwenden, sollten Sie [parametrisierte Abfragen verwenden ] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) und ['bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param .php), um Benutzerdaten zu Ihrer Abfrage hinzuzufügen. ** Verwenden Sie NICHT ** String-Interpolation oder Verkettung, um dies zu erreichen, weil Sie einen schwerwiegenden [SQL injection bug] erstellt haben (http://bobby-tables.com/). ** NIEMALS ** $ _POST 'oder' $ _GET' Daten direkt in eine Abfrage einfügen, es kann sehr schädlich sein, wenn jemand versucht, Ihren Fehler auszunutzen. – tadman