Votre UPDATE
la clause définit le id_publisher
colonne à NULL
, et, en fonction du nom de la colonne et de l'erreur que vous recevez, cela la colonne est la PRIMARY KEY
de la table avec un paramètre de unsigned NOT NULL
.
Pour cette raison, lorsque vous faites id_publisher = NULL
, MySQL le convertit en id_publisher = 0
en raison du unsigned
partie. Cela s'exécutera bien la première fois, cependant, lorsque vous l'exécuterez sur une deuxième ligne, vous tenterez maintenant d'insérer une seconde valeur de clé primaire de 0
, ce qui n'est pas autorisé.
Basé sur l'emplacement du die()
déclaration dans votre exemple de code, je suppose que le bloc suivant est le coupable :
$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);
Ici, votre $id_publis
variable est vide ou nulle.
Je suggérerais soit de supprimer le id_publisher = NULL
partie de la UPDATE
clause qui est aussi simple que de supprimer 'id_publisher' => $id_publis,
à partir du $data1
array, ou repensez la raison pour laquelle vous devez réellement le définir sur null
pour commencer (dans ce cas, supprimer la ligne serait-il plus avantageux ?)