Uw UPDATE clausule is het instellen van de id_publisher kolom naar NULL , en, op basis van de naam van de kolom en de fout die u ontvangt, dat kolom is de PRIMARY KEY . van de tabel met een instelling van unsigned NOT NULL .
Daarom, wanneer u id_publisher = NULL . doet , MySQL converteert het naar id_publisher = 0 vanwege de unsigned een deel. Dit zal de eerste keer prima worden uitgevoerd, maar wanneer u het op een tweede rij uitvoert, probeert u nu een tweede in te voegen waarde primaire sleutel van 0 , wat niet is toegestaan.
Gebaseerd op de locatie van de die() statement in uw voorbeeldcode, neem ik aan dat het volgende blok de boosdoener is:
$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, je $id_publis variabele is leeg of null.
Ik zou willen voorstellen om ofwel de id_publisher = NULL . te verwijderen gedeelte van de UPDATE clausule die zo simpel is als het verwijderen van 'id_publisher' => $id_publis, van de $data1 array, of heroverweeg de reden waarom je het eigenlijk op null moet zetten om te beginnen (zou het in dit geval voordeliger zijn om de rij te verwijderen?)