2017-06-16 1 views
0

Basiert auf Can I bind an array to an IN() condition?PDO: Bindet ein Array an eine IN() - Bedingung mit mehreren WHERE-Klauseln?

Die obige Frage hat keine Antworten für die Verwendung mehrerer WHERE Klauseln.

Die zweitbeste Lösung funktioniert nur mit einer WHERE Klausel:

$qMarks = str_repeat('?,', count($ids) - 1) . '?'; 
$sth = $db->prepare("SELECT * FROM myTable WHERE id IN ($qMarks)"); 
$sth->execute($ids); 

Wenn ich eine zusätzliche WHERE Klausel setzen, erzeugt es ein leeres Ergebnis oder Fehler.

$qMarks = str_repeat('?,', count($ids) - 1) . '?'; 
$sth = $db->prepare("SELECT * FROM myTable WHERE id IN ($qMarks) AND locationid=?"); 
$sth->execute(array($ids, ?)); // Also tried $sth->execute($ids, $location_id) and $sth->execute($ids, array($location_id)); 

Bitte beraten.

Antwort

1

execute akzeptiert ein einzelnes Array von Parametern. Sie müssen folgendes tun:

$sth->execute(array_merge($ids, [$location_id])); 
Verwandte Themen