2016-04-12 16 views
0

Ich schreibe SQL-Abfrage basierend auf Array-Werte, aber ich bekomme ein falsches Ergebnis.Erstellen Sie dynamische UND-Klausel in MySQL-Abfrage mit PHP

Zum Beispiel, wenn mein Array-Wert sind [ 'PAK', 'USA'] dann sollte Abfrage sein: -

Select * From `search` WHERE country = 'PAK' AND country = 'USA' 

und wenn Array-Werte sind [ 'USA', 'China'] dann sollte Abfrage sein: -

Select * From `search` WHERE country = 'USA' AND country = 'China' 

und so weiter ..

ich tue dies, aber ich bin das falsche Ergebnis wie folgt erhalten: -

SELECT * FROM `search` WHERE country = '' AND country = 'Pakistan' AND country = 'United States' 

Ich frage mich, warum Land = ‚‘ immer am Anfang der Abfrage Hinzufügen .. Das ist, warum ich das falsche Ergebnis bin immer. Bitte hilf mir. Vielen Dank im Voraus .. Unten ist mein Code ..

PHP

$query_parts = array(); 

foreach($_POST['countryArray'] as $array){   
    $query_parts[] = "'".$array."'"; 
} 
$string = implode(' AND country = ', $query_parts); 
//echo $string; 

$query = "SELECT * FROM `search` WHERE country = {$string}"; 

echo $query; 
+0

Verwenden 'empty ($ array)' innerhalb foreach Schleife Leerwert zu vermeiden !! – Saty

+0

können Sie bitte hier die $ _POST ['countryArray'] posten. Es funktioniert gut, wenn das Array wie $ test = array ("USA", "China") ist; – Mujahidh

Antwort

0

Der Code ist in Ordnung.

Aber leere Elemente aus Array sind nicht beschränkt.

Das Array $_POST['countryArray'] hat ein leeres Element.

Sie können Filter mit array_filter():

$_POST['countryArray'] = array_filter($_POST['countryArray']); 

Schluss Code:

$query_parts = array(); 
$_POST['countryArray'] = array_filter($_POST['countryArray']); 
foreach($_POST['countryArray'] as $array){ 
    $query_parts[] = "'".$array."'"; 
} 
$string = implode(' AND country = ', $query_parts); 
//echo $string; 
$query = "SELECT * FROM `search` WHERE country = {$string}"; 
echo $query; 
+0

Danke @pupil .. Es hat funktioniert ... :) –

+0

Willkommen @Junaidafzal. – Pupil

+0

1 weitere Frage, wie wenn ich ein anderes AND hinzufügen möchte. Beispielsweise. Wählen Sie * aus '' Suche'' WHERE Land = 'PAK' UND Land = 'USA' UND Produktname wie = "% $ myvariable%" .. Wie füge ich Produktname wie in diesem Code .. Dank im Voraus ... –

Verwandte Themen