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?)