SQL Where In Array OR

jomafi

Grünschnabel
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:
      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;

      }
 
Da die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.
PHP MySQL Debug Queries
Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das ausgegebe SQL-Statement ins Forum.
 
Da die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.
PHP MySQL Debug Queries
Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das ausgegebe SQL-Statement ins Forum.

Diese Methode wird allgemein als die einfachste und schnellste aufgefasst.
Traditionelle Methode: Kopieren und Einfügen. Eine gut gestellte Frage ist schon halb beantwortet. Danke
 
Zurück