Wenn Sie die SQL-Zeichenfolge erstellen (prepare_update_string, glaube ich), sowie in den beiden foreach-Schleifen, in denen Sie Daten binden, führen Sie eine inkrementierende Zählung aus und hängen Sie sie an den Bindungswert an. Aus ":status" wird also ":status1".
Etwas wie:
$i = 1;
foreach ($data as $k => $v) {
$this->_sth->bindValue(":{$k.$i}", $v);
$i++;
}
Dadurch wird das Problem der reservierten Schlüsselwörter gelöst.
Es löst auch das Problem (dem Sie sicher in Zukunft begegnen werden), bei dem Sie mehr als einmal an denselben Platzhalter binden müssen.
z.B. anstelle des Folgenden, das einen Fehler aufgrund von zwei Bindungen auf den :status-Platzhalter
auslöstSELECT * from table WHERE `status` = :status AND `otherfield` = :status
Mit einer aufsteigenden Zählung wird dies zu:
SELECT * from table WHERE `status` = :status1 AND `otherfield` = :status2
Viel Spaß.