bindParam Vereist een referentie
Het probleem wordt veroorzaakt door de manier waarop je parameters bindt in de foreach-lus.
foreach($bindings as $placeholder=>$bound){
echo $placeholder . " - " . $bound."<br/>";
$stmt->bindParam($placeholder, $bound);
}
bindParam
een verwijzing nodig. Het bindt de variabele, niet de waarde, aan de instructie. Aangezien de variabele in een foreach-lus aan het begin van elke iteratie opnieuw wordt ingesteld, is alleen de laatste verwijzing naar $bound
wordt intact gelaten en u bindt er uiteindelijk al uw tijdelijke aanduidingen aan.
Daarom werkt je code wanneer $query['where']
bevat slechts één invoer, maar mislukt wanneer deze meer dan één bevat.
U kunt het probleem op 2 manieren oplossen:
Gegevens op referentie
foreach($bindings as $placeholder => &$bound) { //pass $bound as a reference (&)
$stmt->bindParam($placeholder, $bound); // bind the variable to the statement
}
Waarde doorgeven
Gebruik bindValue
in plaats van bindParam
:
foreach($bindings as $placeholder => $bound) {
$stmt->bindValue($placeholder, $bound); // bind the value to the statement
}