2017-05-19 2 views
0

Ich habe eine Tabelle - nennen wir die Tabelle Attribute:

ID | Farbe | Größe

1 | rot | L

2 | rot | XL

3 | blau | L

4 | blau | XL ...

Jetzt habe ich ein Array, das wie folgt aussieht:

$parameters[0] = array('red', 'L'); 
$parameters[1] = array('red', 'XL'); 
$parameters[2] = array('blue', 'L'); 

Wie funktioniert meine Abfrage in RAW-SQL aussehen muss, wenn ich das Ergebnis zu sein, wie diese haben wollen :

$result = array(1,2,3); 
+0

was Ihre Anfrage bitte zeigen uns, weil wir nicht wissen, wie Sie Parameter übergeben? –

+0

Ich weiß einfach nicht, wie das überhaupt geht? Gibt es einen besseren Weg als eine foreach-Schleife? – craphunter

+0

Mist, kleiner Fehler! – craphunter

Antwort

1

Bei Verwendung von PDO sollte so etwas funktionieren.

$parameters[0] = array('red', 'L'); 
$parameters[1] = array('red', 'XL'); 
$parameters[2] = array('blue', 'L'); 
$where = ''; 
foreach($parameters as $param) { 
    $where[] = '(color = ? and size = ?)'; 
    $params[] = $param[0]; 
    $params[] = $param[1]; 
} 
$where = implode(' or ', $where); 

hängen Sie die $where dann auf Ihre Anfrage die $params mit dem execute verwenden.

Demo: https://eval.in/801247

1
SELECT id FROM attributes 
WHERE (color = 'red' AND size = 'L') 
     OR (color = 'red' AND size = 'XL') 
     OR (color = 'blue' AND size = 'L'); 

RAW-SQL für Ihr Problem. Jetzt können Sie PHP-Implementierung als Ihre Notwendigkeit machen!

Verwandte Themen