2016-08-17 3 views
6

Dies ist die $ _POST-Array von meinem Formular.

Array ([prescribedid] => Array ([0] => 1 [1] => 2 [2] => 3 [3] => 9 [4] => 13) 

Ich möchte eine Auswahl für eines der Elemente im Array erstellen. Ich habe dies geschrieben, was das richtige SELECT erzeugt, aber das if(), um ein hinteres ODER zu eliminieren, macht es klobig.

$query = "SELECT * "; 
$query .= "FROM prescribed WHERE "; 

for($i=0; $i<count($_POST["prescribedid"]); $i++) { 
    $query .= "prescribedid={$_POST['prescribedid'][$i]} "; 
     if($i < (count($_POST["prescribedid"])-1)) { 
     $query .= "OR "; 
     } 
} 

Es produziert dies:

SELECT * FROM prescribed WHERE prescribedid=1 OR prescribedid=2 OR prescribedid=3 OR prescribedid=9 OR prescribedid=13 

Gibt es einen anderen Weg, um die Selects-Gruppe oder die FOR() schreiben, um es sauberer zu machen, das heißt ohne die letzte IF().

+3

'suchen Tipp:' Sie können mit 'IN' um mehrere' OR' Klauseln zu vermeiden. '... WHERE represented IN (1,2,3,9,13) ....' – 1000111

+2

'Tipp:' Sie müssen PDO oder Vaidate-Eingang verwenden. Dieser Code kann für die SQL-Injektion verwendet werden. – ineersa

Antwort

8
$values=implode(",",$_POST["prescribedid"]); 
$query = "SELECT * FROM prescribed WHERE prescribedid IN ($values)"; 

Sanitization auf Sie ist :)

2

Sie können einfach Klausel hier verwenden IN.

Siehe MySQL IN clause

$query = "SELECT * FROM prescribed WHERE prescribedid IN ".implode(',', $_POST["prescribedid"]); 
4

Verwenden MySQL IN-Klausel

$ids = implode(",",$_POST["prescribedid"]); 
$query = "SELECT * FROM prescribed WHERE prescribedid IN ($ids)"; 
4

Hallo Sie können Incondition verwenden. verwenden imploade Funktion Komma seoarated Werte

$data = array('prescribedid'=>array(1,2,3,9,14)); 
$query = 'SELECT * FROM prescribed WHERE prescribedid IN ('; 
$query .= implode(',',$data['prescribedid']).')'; 
echo $query ; 

Ausgabe

SELECT * FROM prescribed WHERE prescribedid IN (1,2,3,9,14) 
+0

Sie benötigen die String-Verkettung nicht (und * kann * Verwirrung stiften, besonders in diesem Layout.) –