2016-04-05 8 views
3

SELECT Habe ich eine Datenbankstruktur MySql und Werte Proben wie unten dargestellt:Wie Comma Separated Variable von Mysql

sno  firstname  status 
1  John   Active 
2  Kelly   Inactive 
3  Harri   Passive 
4  Kris   Dormant 

Jetzt, wo ich brauche eine SQL-Abfrage aus einer PHP-Seite und die Statuswerte auszuführen sind von mehreren Kontrollkästchen, die ich als Array zugewiesen habe.

Ich habe Implode Funktion für dieses Array verwendet:

$status = $_POST['status'];  
$mstat= implode (',', $status); 
$query="SELECT * FROM USER WHERE status IN '$mstat'"; 
$result=mysql_query($query); 

while ($members = mysql_fetch_assoc($result)) 
     { 
     $fname= $members['firstname']; 
     echo $fname; 
     echo '</br>'; 
     } 

Das Problem ist, dass ich keine Ergebnisse zu bekommen. Was könnte das Problem sein? Oder wenn jemand eine Alternative vorschlagen/beraten könnte.

Als ich echo $mstat; ich Active,Passive,Dormant (ist das auf Grund meiner Checkbox Auswahl)

Antwort

7

status sind Strings. Sie müssen sie mit quotes umhüllen. Und IN benötigt (), um die Zeichenfolgenwerte zu umbrechen. Versuchen -

$mstat= "'" . implode ("','", $status) . "'"; 
$query="SELECT * FROM USER WHERE status IN ($mstat)"; 

Unter der Annahme, $status enthält einige oder alle diese Werte in der Datenbank in Array-Format gezeigt.

+0

Danke @Sougata. Es klappt. – keyem

+0

Großartig !! Froh, dass ich Helfen kann. –

-2

Ändern Sie diese Zeile:

$query="SELECT * FROM USER WHERE status IN ('$mstat')"; 

Das Argument muss in()

!!! jedes Wort muss in '' wie: $ query = "SELECT * FROM USER WHERE Status IN ('Aktiv', 'Inaktiv')"

Sie es mögen ändern können:

if ($mstat) $query .= ' ({$db->quote($status}) '; 
+0

Danke, aber hat nicht funktioniert !! – keyem

+0

Bitte zeigen Sie uns den Inhalt von $ mstat –

+0

Testen Sie die Abfrage wie: $ query = "SELECT * FROM USER WHERE Status IN (1,3,5)"; oder andere gültige Werte; –

1

Hier ist zu 100% Arbeits Antwort

$mstat= implode ("','", $status); 
$query="SELECT * FROM USER WHERE status IN ('$mstat')"; 

in Werken wie dieser IN ('Aktiv', 'Passive', 'Dormat') so müssen wir '' in allen Werten hinzuzufügen, die in getan wird Funktion implodieren.

+0

Vielen Dank für den Hinweis – keyem

+0

Ihr Willkommen @keyem –

Verwandte Themen