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