Din UPDATE
klausulen indstiller id_publisher
kolonne til NULL
, og baseret på navnet på kolonnen og den fejl, du modtager, at kolonne er tabellens PRIMARY KEY
med en indstilling på unsigned NOT NULL
.
På grund af dette, når du gør id_publisher = NULL
, MySQL konverterer det til id_publisher = 0
på grund af den unsigned
en del. Dette vil fungere fint første gang, men når du kører det på en anden række, vil du nu forsøge at indsætte et sekund primærnøgleværdien 0
, hvilket ikke er tilladt.
Baseret på placeringen af die()
sætning i din eksempelkode, antager jeg, at følgende blok er synderen:
$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);
Her er din $id_publis
variabel er enten tom eller null.
Jeg vil foreslå enten at fjerne id_publisher = NULL
del fra UPDATE
klausul, som er så simpel som at fjerne 'id_publisher' => $id_publis,
fra $data1
array, eller genovervej årsagen til, at du faktisk skal indstille den til null
til at begynde med (vil det i dette tilfælde være mere fordelagtigt at slette rækken?)