Ihr UPDATE -Klausel setzt den id_publisher Spalte auf NULL , und basierend auf dem Namen der Spalte und dem Fehler, den Sie erhalten, das Spalte ist der PRIMARY KEY der Tabelle mit einer Einstellung von unsigned NOT NULL .
Aus diesem Grund, wenn Sie id_publisher = NULL ausführen , MySQL konvertiert es in id_publisher = 0 aufgrund des unsigned Teil. Dies wird beim ersten Mal problemlos ausgeführt, wenn Sie es jedoch in einer zweiten Zeile ausführen, werden Sie jetzt versuchen, eine zweite einzufügen Primärschlüsselwert von 0 , was nicht erlaubt ist.
Basierend auf der Position des die() -Anweisung in Ihrem Beispielcode, gehe ich davon aus, dass der folgende Block der Übeltäter ist:
$data1 = array(
'id_publisher' => $id_publis,
'publisher' => $publis,
'artis' => $ar,
'id_label' => $id_lab);
$this->db->where('id_publisher', $this->input->post('id'), $data);
$this->db->update("t_publisher",$data1);
Hier, Ihre $id_publis Variable ist entweder leer oder null.
Ich würde vorschlagen, entweder id_publisher = NULL zu entfernen Teil aus dem UPDATE -Klausel, die so einfach ist wie das Entfernen von 'id_publisher' => $id_publis, aus $data1 Array, oder überdenken Sie den Grund, warum Sie es tatsächlich auf null setzen müssen zu beginnen (wäre es in diesem Fall vorteilhafter, die Zeile zu löschen?)