簡體   English   中英

發生數據庫錯誤錯誤號:1062

[英]Database Error Occurred Error Number: 1062

我嘗試使用sql為我的CI執行一次執行更新三個表,但為什么它仍然出錯?

這是錯誤警告:

A Database Error Occurred

Error Number: 1062

Duplicate entry '0' for key 1

UPDATE `t_publisher` SET `id_publisher` = NULL, `publisher` = NULL, `artis` = NULL, `id_label` = NULL WHERE `id_publisher` = '113'

這是代碼:

function update($id_user=null)
  {
   if (($this->input->post('submit') == 'Update')){
    $user=$this->input->post('username');
    $pass=$this->input->post('userpassword');
    $ussta=$this->input->post('userstatus');
    $usty=$this->input->post('usertype');

   $data = array(
    'user_name' => $user,
    'user_pass' => $pass,
    'user_status' => $ussta,
    'user_type' => $usty);

    $this->db->where('user_id', $this->input->post('id'), $data);
    $this->db->update("t_user",$data);

   $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);
    echo $this->db->last_query();
    die();

   $data2 = array(
    'id_label' => $id_lab,
    'label' => $label);

    $this->db->where('id_label', $this->input->post('id'), $data);
    $this->db->update("t_label",$data2);
    echo $this->db->last_query();
    die();
    redirect("registrasi/reg");
   }
    $var['data'] = $this->db->query("select * from t_user where USER_ID= '$id_user'")->row_array();  
    $var1['data'] = $this->db->query("select * from t_publisher where id_publisher = '$id_publis'")->row_array();
    $var2['data'] = $this->db->query("select * from t_label where id_label = '$id_lab'")->row_array();
    $this->load->view('update', $var,$var1,$var2);
}

我的代碼有什么問題? 請幫忙。 謝謝你。

您的UPDATE子句將id_publisher列設置為NULL ,並且根據列的名稱和您收到的錯誤, 列是表的PRIMARY KEY ,其設置為unsigned NOT NULL

因此,當你執行id_publisher = NULL ,由於unsigned部分,MySQL將其轉換為id_publisher = 0 這將在第一次執行時正常,但是,當您在第二行上運行它時,您現在將嘗試插入第二個主鍵值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變量為空或null。

我建議從UPDATE子句中刪除id_publisher = NULL部分, 'id_publisher' => $id_publis,$data1數組中刪除'id_publisher' => $id_publis,一樣簡單,或者重新考慮實際需要將其設置為null以開始(在這種情況下,刪除行會更有利嗎?)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM