Wanneer u de SQL-string construeert (prepare_update_string denk ik), evenals in zowel de foreach-lussen waar u gegevens bindt, voert u een oplopende telling uit en voegt u deze toe aan de bindwaarde. Dus ":status" wordt ":status1".
Iets als:
$i = 1;
foreach ($data as $k => $v) {
$this->_sth->bindValue(":{$k.$i}", $v);
$i++;
}
Dit lost het probleem van eventuele gereserveerde zoekwoorden op.
Het lost ook het probleem op (waarvan u zeker weet dat u dit in de toekomst zult tegenkomen) waarbij u meer dan eens aan dezelfde tijdelijke aanduiding moet binden.
bijv. in plaats van het volgende, dat een fout genereert vanwege twee bindingen op de :status placeholder
SELECT * from table WHERE `status` = :status AND `otherfield` = :status
Met een oplopende telling wordt dit:
SELECT * from table WHERE `status` = :status1 AND `otherfield` = :status2
Geniet ervan.