Вашата UPDATE
клауза задава id_publisher
колона на NULL
и въз основа на името на колоната и грешката, която получавате, това колоната е PRIMARY KEY
на таблицата с настройка на unsigned NOT NULL
.
Поради това, когато направите id_publisher = NULL
, MySQL го преобразува в id_publisher = 0
поради unsigned
част. Това ще се изпълни добре първия път, но когато го стартирате на втори ред, сега ще се опитвате да вмъкнете втори стойност на първичен ключ 0
, което не е позволено.
Въз основа на местоположението на die()
във вашия примерен код, предполагам, че следният блок е виновникът:
$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);
Ето вашия $id_publis
променливата е празна или нула.
Предлагам или да премахнете id_publisher = NULL
част от UPDATE
клауза, която е толкова проста, колкото премахването на 'id_publisher' => $id_publis,
от $data1
масив или преосмислете причината, поради която всъщност трябва да го зададете на null
като начало (в този случай изтриването на реда ще бъде ли по-полезно?)