Saat Anda membuat string SQL (saya pikir prepare_update_string), serta di kedua loop foreach tempat Anda mengikat data, jalankan hitungan yang bertambah dan tambahkan ke nilai bind. Jadi ":status" menjadi ":status1".
Sesuatu seperti:
$i = 1;
foreach ($data as $k => $v) {
$this->_sth->bindValue(":{$k.$i}", $v);
$i++;
}
Ini akan memecahkan masalah kata kunci yang dipesan.
Ini juga memecahkan masalah (yang saya yakin akan Anda temui di masa mendatang) di mana Anda harus mengikat ke placeholder yang sama lebih dari sekali.
misalnya alih-alih yang berikut ini, yang memunculkan kesalahan karena dua ikatan pada :status placeholder
SELECT * from table WHERE `status` = :status AND `otherfield` = :status
Dengan hitungan yang bertambah, ini menjadi:
SELECT * from table WHERE `status` = :status1 AND `otherfield` = :status2
Selamat menikmati.