2012-03-29 4 views
0

Ich habe dieses Stück von PHP - MySQL-Code:
MySQL-Abfrage funktioniert nicht innerhalb von PHP-Datei

Wenn ein Benutzer in der Datenbank als Frau markierte die Seite öffnet es die Datenbank für einige Daten mit der Nummer abfragt 1012,1013,1014 sonst nur 1012,1013.

// $php_variable=2 

      $SQL_M = "SELECT @gender:=$php_variable, B.id, B.notes, B.time_logged 
      FROM database.evs B 
      INNER JOIN (select @gender:=0) as Something 
      WHERE 
      CASE WHEN @gender=2 
      THEN (B.items IN ('1012', '1013', '1014')) 
      ELSE (B.items IN ('1012', '1013')) 
      END 
      ORDER BY B.time_logged ASC"; 


      $result = mysql_query($SQL_M); 
      $mycount = mysql_num_rows($result); 
      if ($mycount > 0) { 
       while ($mrow = mysql_fetch_array($result)) 
       { 
        extract($mrow); 
        echo ">>>>".$id."<br/>" 
        //Works locally - not on server. 
       } 
      } 

$ php_variable ist 2.

Es sollte Ausgabeelemente mit Artikel-ID in: 1012,1013,1014
es Stattdessen gibt Ergebnisse für Elemente in 1012,1013.

Die seltsame Sache ist, dass ich diese Abfrage lokal (von PHP und MySQL Abfrage allein) und auf dem Server (Plesk - Mysql) getestet und es läuft gut.

Es läuft nicht in der PHP-Datei auf dem Server - auch die ORDER funktioniert nicht richtig.

Die Abfrage, die ausgeführt werden soll ist:

$SQL_M = "SELECT B.id, B.notes, B.time_logged 
FROM database.evs B 
WHERE B.items IN ('1012', '1013', '1014') 
ORDER BY B.time_logged ASC"; 

Php Version: 5.16 (Local und Server)
MySQL Version: 5.0.77 (lokale und Server)

Vielen Dank im Voraus für Ihre Hilfe.

+1

Warum erstellen Sie nicht einfach die Abfrage in PHP je nach Bedingung? Dies erscheint unnötig kompliziert. – jeroen

+0

Ich stimme Ihnen zu, basierend auf dem Beispiel, das ich gab. In Wirklichkeit ist es viel komplizierter, aber dieses einfache Beispiel funktioniert auch nicht. Ich versuche, den Grund zu finden ... –

+1

versuchen Echo $ SQL_M und führen Sie es von mysql Kommandozeile/phpmyadmin Was ist $ SQL_M echten Inhalt? –

Antwort

2

So wie ich es tun würde:

$SQL_M = "SELECT B.id, B.notes, B.time_logged FROM database.evs B"; 
if ($php_variable == 2) 
{ 
    $SQL_M .= " WHERE B.items IN ('1012', '1013', '1014')"; 
} 
else 
{ 
    $SQL_M .= " WHERE B.items IN ('1012', '1013')"; 
} 
$SQL_M .= " ORDER BY B.time_logged ASC"; 

Dieses einfachere noch geschrieben werden kann, aber das ist nur die allgemeine Idee zu zeigen.

+0

Danke Jeroen, ich werde das irgendwann tun, aber ich muss auch herausfinden, was die Ursache für dieses Verhalten ist. Irgendwelche Ideen? –

+0

@Kabamaru Nein, ich habe Angst (oder Glück ...) Ich habe keine Erfahrung mit dem Erstellen von SQL-Anweisungen. – jeroen

+1

Vielen Dank für Ihre Hilfe. Ich hoffe ich werde irgendwann die Antwort finden und möge das Glück auch bei mir sein :) –

Verwandte Themen