Když vytvoříte řetězec SQL (myslím, že prepare_update_string), stejně jako v obou smyčkách foreach, kde vážete data, spusťte zvyšující se počet a připojte jej k hodnotě vazby. Takže ":status" se změní na ":status1".
Něco jako:
$i = 1;
foreach ($data as $k => $v) {
$this->_sth->bindValue(":{$k.$i}", $v);
$i++;
}
To vyřeší problém všech vyhrazených klíčových slov.
Řeší to také problém (se kterým se určitě v budoucnu setkáte), kdy se potřebujete vázat na stejný zástupný symbol více než jednou.
např. místo následujícího, což vyvolá chybu kvůli dvěma vazbám na zástupný symbol :status
SELECT * from table WHERE `status` = :status AND `otherfield` = :status
S narůstajícím počtem to bude:
SELECT * from table WHERE `status` = :status1 AND `otherfield` = :status2
Užijte si to.