erm -.- ich mach dann mal den Dolmetscher ...
sein "funzt nicht" heißt in dem Fall -> die SQL-Abfrage liefert nicht die erwarteten Ergebnisse
und das liegt daran, dass du die einzelnen WHERE-Klauseln nicht sinnvoll zusammengefasst hast
die per AND verbundenen Teile wirken "zusammen", während OR diese Verbindung aufhebt und separat betrachtet wird .
du müsstest also die 3 Teile, die per OR verbunden sind einmal per Klammer zusammenfassen
nach dem Muster
where a and b and (c or d or e) AND f .....
eventuell musst du im mysql-Handbuch mal die Operator-Präzedenz nachschlagen, es kann sogar sein, dass OR dein IN beeinflußt und du demzufolge nochmal klammern musst
ansonsten hilft es in solchen Fällen fast immer ,wenn du dein Script die Abfrage mit Werten befüllen lässt und dann AUSGIBST (DIE ABFRAGE !!)-
die Ausgabe im Browserfenster wird kopiert und im SQL-Fenster von phpmyadmin ausgeführt ...
SQL Where In Array OR
Einklappen
X
-
Was möchtest du damit sagen? Ich versteh's nicht.Zitat von engine Beitrag anzeigenDiese Methode wird allgemein als die einfachste und schnellste aufgefasst.
Traditionelle Methode: Kopieren und Einfügen.
Einen Kommentar schreiben:
-
Diese Methode wird allgemein als die einfachste und schnellste aufgefasst.Zitat von AmicaNoctis Beitrag anzeigenHallo und willkommen im Forum!
Bitte Forenregeln (= Grundlagen zur Problembehebung) beachten und vollständige Fehlermeldungen zitieren. „Funktioniert nicht“ ist keine Fehlerbeschreibung und lässt uns sinnlos im Dunkeln tappen. Daher landen „funzt nicht“-Thread gerne mal auf dem Abstellgleis.
Gruß,
Amica
Traditionelle Methode: Kopieren und Einfügen. Eine gut gestellte Frage ist schon halb beantwortet. Danke
Einen Kommentar schreiben:
-
Hallo und willkommen im Forum!
Bitte Forenregeln (= Grundlagen zur Problembehebung) beachten und vollständige Fehlermeldungen zitieren. „Funktioniert nicht“ ist keine Fehlerbeschreibung und lässt uns sinnlos im Dunkeln tappen. Daher landen „funzt nicht“-Thread gerne mal auf dem Abstellgleis.
Gruß,
Amica
Einen Kommentar schreiben:
-
SQL Where In Array OR
Hallo,
ich sitze an einem Projekt und komme nun nicht weiter vor folgendem Problem:
Die SQL Abfrage funktioniert auf unseren localhost (MySql Server Version: 5.5.11) jedoch nicht auf auf dem 1und1 (MySql Server Version:5.0)
Die SQL-abfrage scheitert, sobald "OR p.festservice_b IN (Array) OR p.festservice_c IN (Array)"nach der p.festservice_a steht.
u.Dienste_budget, u.Dienste_gebiet und u.Dienste_service sind Datentypen
Wäre toll, wenn jemand bestätigen oder dementieren könnte dies für mich. Danke
PHP-Code:public function getProducts($userid, $sort = false)
{
global $db;
($sort) ? $order = $sort : $order = "p.date DESC";
$where = "WHERE NOT EXISTS (SELECT * FROM utransactions AS t WHERE t.user_id = '{$userid}' AND t.product_id = p.token)"
. "\n AND p.approved='yes'"
. "\n AND p.status='1'"
. "\n AND u.uid = '" . $userid . "'"
. "\n AND p.budget_id IN (u.Dienste_budget)"
. "\n AND p.gebiet_id IN (u.Dienste_gebiet)"
. "\n AND (p.festservice_a IN (u.Dienste_service)"
. "\n OR p.festservice_b IN (u.Dienste_service)"
. "\n OR p.festservice_c IN (u.Dienste_service))";
$sql = "SELECT p.*,"
. "\n DATE_FORMAT(p.date, '%d.%m.%Y') as created,"
. "\n DATE_FORMAT(p.festdatum, '%d.%m.%Y') as festdate,"
. "\n (TO_DAYS(NOW()) - TO_DAYS(p.festdatum)) as days,"
. "\n TO_DAYS(DATE_ADD(p.festdatum,INTERVAL -1 DAY))- TO_DAYS(NOW()) as expiry"
. "\n FROM products AS p, usersettings AS u " . $where . " ORDER BY " . $order;
$row = $db->fetch_all($sql);
return $row;
}
Stichworte: -
Einen Kommentar schreiben: