Il tuo UPDATE
la clausola sta impostando il id_publisher
colonna su NULL
e, in base al nome della colonna e all'errore che stai ricevendo, quello colonna è la PRIMARY KEY
della tabella con un'impostazione di unsigned NOT NULL
.
Per questo motivo, quando esegui id_publisher = NULL
, MySQL lo converte in id_publisher = 0
a causa del unsigned
parte. Questo verrà eseguito correttamente la prima volta, tuttavia, quando lo esegui su una seconda riga, ora tenterai di inserire un secondo valore della chiave primaria di 0
, che non è consentito.
Basato sulla posizione del die()
dichiarazione nel tuo codice di esempio, presumo che il seguente blocco sia il colpevole:
$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);
Qui, il tuo $id_publis
la variabile è vuota o nulla.
Suggerirei di rimuovere id_publisher = NULL
parte dal UPDATE
clausola che è semplice come rimuovere 'id_publisher' => $id_publis,
dal $data1
array o ripensa al motivo per cui hai effettivamente bisogno di impostarlo su null
per cominciare (in questo caso, eliminare la riga sarebbe più vantaggioso?)