Din UPDATE
satsen ställer in id_publisher
kolumnen till NULL
, och baserat på namnet på kolumnen och felmeddelandet du får, att kolumnen är tabellens PRIMARY KEY
med inställningen unsigned NOT NULL
.
På grund av detta, när du gör id_publisher = NULL
, MySQL konverterar den till id_publisher = 0
på grund av den unsigned
del. Detta kommer att fungera bra första gången, men när du kör det på en andra rad kommer du nu att försöka infoga en andra primärnyckelvärdet 0
, vilket inte är tillåtet.
Baserat på platsen för die()
uttalande i din exempelkod, jag antar att följande block är boven:
$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);
Här, din $id_publis
variabeln är antingen tom eller null.
Jag skulle föreslå att du antingen tar bort id_publisher = NULL
del från UPDATE
klausul som är så enkel som att ta bort 'id_publisher' => $id_publis,
från $data1
array, eller ompröva anledningen till att du faktiskt behöver ställa in den till null
till att börja med (i det här fallet skulle det vara mer fördelaktigt att ta bort raden?)