Sua
UPDATE
cláusula está definindo o id_publisher
coluna para NULL
e, com base no nome da coluna e no erro que você está recebendo, que coluna é a PRIMARY KEY
da tabela com uma configuração de unsigned NOT NULL
. Por causa disso, quando você faz
id_publisher = NULL
, o MySQL converte para id_publisher = 0
devido ao unsigned
papel. Isso funcionará bem na primeira vez, no entanto, quando você executá-lo em uma segunda linha, agora você estará tentando inserir um segundo valor de chave primária de 0
, o que não é permitido. Com base na localização do
die()
declaração em seu código de exemplo, estou assumindo que o seguinte bloco é o culpado: $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);
Aqui, seu
$id_publis
variável está vazia ou nula. Sugiro remover o
id_publisher = NULL
parte do UPDATE
cláusula que é tão simples quanto remover 'id_publisher' => $id_publis,
do $data1
array ou repense o motivo pelo qual você realmente precisa defini-lo como null
para começar (neste caso, excluir a linha seria mais benéfico?)