Vaše UPDATE
klauzule nastavuje id_publisher
sloupec na NULL
a na základě názvu sloupce a chyby, která se vám zobrazuje, to sloupec je PRIMARY KEY
tabulky s nastavením unsigned NOT NULL
.
Z tohoto důvodu, když uděláte id_publisher = NULL
, MySQL jej převede na id_publisher = 0
kvůli unsigned
část. Toto se provede v pořádku poprvé, ale když jej spustíte na druhém řádku, budete se nyní pokoušet vložit druhý hodnota primárního klíče 0
, což není povoleno.
Na základě umístění die()
ve vašem ukázkovém kódu, předpokládám, že viníkem je následující blok:
$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);
Zde je vaše $id_publis
proměnná je buď prázdná, nebo null.
Navrhoval bych buď odstranit id_publisher = NULL
část z UPDATE
klauzule, která je stejně jednoduchá jako odstranění 'id_publisher' => $id_publis,
z $data1
pole nebo přehodnoťte důvod, proč jej vlastně potřebujete nastavit na null
pro začátek (bylo by v tomto případě smazání řádku výhodnější?)