Когато конструирате SQL низа (мисля, че prepare_update_string), както и в двата цикъла foreach, където свързвате данни, стартирайте нарастващ брой и го добавете към стойността за свързване. Така че ":status" става ":status1".
Нещо като:
$i = 1;
foreach ($data as $k => $v) {
$this->_sth->bindValue(":{$k.$i}", $v);
$i++;
}
Това ще реши проблема с всички запазени ключови думи.
Той също така решава проблема (който съм сигурен, че ще се сблъскате в бъдеще), при който трябва да се свържете с един и същ контейнер повече от веднъж.
напр. вместо следното, което хвърля грешка поради две свързвания на :status placeholder
SELECT * from table WHERE `status` = :status AND `otherfield` = :status
С нарастващ брой това става:
SELECT * from table WHERE `status` = :status1 AND `otherfield` = :status2
Насладете се.