Ich denke, das könnte daran liegen, dass Sie jede Bindung zweimal in der Anweisung dekariert haben, z. :firstname
erscheint in den VALUES
-Klausel sowie die ON DUPLICATE KEY UPDATE
Klausel.
Sie übergeben nur 8 Bindungen an $stmt->execute
aber PDO sucht nach 16.
Sie könnten versuchen, sie im ON DUPLICATE KEY UPDATE
etwas anders zu benennen Klausel, die Ihnen eine Abfrage wie z. B.
INSERT INTO am_administrator (firstName,lastName,username,password,email,isSuperUser,dateCreated,dateLastModified) VALUES (:firstName,:lastName,:username,:password,:email,:isSuperUser,:dateCreated,:dateLastModified) ON DUPLICATE KEY UPDATE firstName = :update_firstName,lastName = :update_lastName,username = :update_username,password = :update_password,email = :update_email,isSuperUser = :update_isSuperUser,dateCreated = :update_dateCreated,dateLastModified = :update_dateLastModified;