El problema es que en tu sentencia al no establecer un condicionante where para la consulta, estas modificando todos los registros de la tabla, y por tanto el PK de todos los registros queda a 1, por lo que se duplica la PK.
Fijate en lo sigiente:
Código SQL:
Ver originalUPDATE tabla SET campo=valor WHERE mi_pk=1
La primera modifica todos los registros ya que no indicamos cual en concreto queremos modificar
La segunda solo afecta a los registros donde mi_pk sea igual a 1
Espero se entienda, para una explicación más detallada, prueba a preguntar en el subforo de base de datos, ya que esto ya no tiene que ver con php.