आपका 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 . पर सेट करने की आवश्यकता है आरंभ करने के लिए (इस मामले में, क्या पंक्ति को हटाना अधिक लाभदायक होगा?)