2016-12-26 78 views
0

我正在開發具有項目ID,項目名稱,鏈接,圖像,排序順序的opencart的輪播擴展。轉盤有一個問題,同時保存它會改變項目ID,所以我不得不修改代碼以獲取固定ID查詢到數據庫,但是現在我得到了1062錯誤。Opencart:錯誤號:1062鍵'PRIMARY'的重複項'1'

Notice: Error: Duplicate entry '1' for key 'PRIMARY' Error No: 1062 INSERT INTO crousal SET crousal_id = '1', name = 'Baby & Toys', link = '/index.php?route=product/product&product_id=7570', image = 'data/carousel/banner2.jpg', sort_order = '0' in /home/user/public_html/system/database/mysql.php on line 49

共享模型/ carousel.php editCarousel功能

public function editCrousal($crousal_image) { 

    $crousal_id = $this->db->getLastId(); 

    $this->db->query("DELETE FROM " . DB_PREFIX . "mobiapp_crousal WHERE crousal_id = '" . (int)$crousal_id . "'"); 

    if (isset($crousal_image['crousal_image'])) { 
     foreach ($crousal_image['crousal_image'] as $crousal_image) { 

      $this->db->query("INSERT INTO " . DB_PREFIX . "mobiapp_crousal SET crousal_id = '" . (int)$crousal_id . "', name = '" . $this->db->escape($crousal_image['name']) . "', link = '" . $this->db->escape($crousal_image['link']) . "', image = '" . $this->db->escape($crousal_image['image']) . "', sort_order = '" . (int)$crousal_image['sort_order'] . "'"); 

      $crousal_id = $this->db->getLastId(); 

     } 
    } 
} 

任何意見,爲什麼我收到此錯誤以及如何解決,謝謝你在先進。

P.S:Opencart的1.5.x的

編輯:DB結構&模塊信息

$this->db->query(" 
     CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "mobiapp_crousal` (
      `crousal_id` INT(11) NOT NULL AUTO_INCREMENT, 
      `name` VARCHAR(255) NOT NULL, 
      `link` VARCHAR(255) NOT NULL, 
      `image` VARCHAR(255) NOT NULL, 
      `sort_order` INT(3) NOT NULL, 
      PRIMARY KEY (`crousal_id`) 
     ) ENGINE=MyISAM DEFAULT COLLATE=utf8_general_ci;"); 

模型文件

public function addCrousal($crousal_image) { 
    $this->db->query("INSERT INTO " . DB_PREFIX . "mobiapp_crousal SET name = '" . $this->db->escape($crousal_image['name']) . "', sort_order = '" . (int)$crousal_image['sort_order'] . "'"); 

    $crousal_id = $this->db->getLastId(); 

    if (isset($crousal_image['crousal_image'])) { 
     foreach ($crousal_image['crousal_image'] as $crousal_image) { 
      $this->db->query("INSERT INTO " . DB_PREFIX . "mobiapp_crousal SET crousal_id = '" . (int)$crousal_id . "', link = '" . $this->db->escape($crousal_image['link']) . "', image = '" . $this->db->escape($crousal_image['image']) . "'"); 

      $crousal_id = $this->db->getLastId(); 
     } 
    }  
} 

public function editCrousal($crousal_image) { 

    $crousal_id = $this->db->getLastId(); 

    $this->db->query("DELETE FROM " . DB_PREFIX . "mobiapp_crousal WHERE crousal_id = '" . (int)$crousal_id . "'"); 

    if (isset($crousal_image['crousal_image'])) { 
     foreach ($crousal_image['crousal_image'] as $crousal_image) { 

      $this->db->query("INSERT INTO " . DB_PREFIX . "mobiapp_crousal SET crousal_id = '" . (int)$crousal_id . "', name = '" . $this->db->escape($crousal_image['name']) . "', link = '" . $this->db->escape($crousal_image['link']) . "', image = '" . $this->db->escape($crousal_image['image']) . "', sort_order = '" . (int)$crousal_image['sort_order'] . "'"); 

      $crousal_id = $this->db->getLastId(); 

     } 
    } 
} 

public function getCrousalImages() { 
    $crousal_image_data = array(); 

    $crousal_image_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "mobiapp_crousal ORDER BY sort_order ASC"); 

    foreach ($crousal_image_query->rows as $crousal_image) { 
     $crousal_image_description_data = array(); 

     $crousal_image_description_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "mobiapp_crousal WHERE crousal_id = '" . (int)$crousal_image['crousal_id'] . "'"); 

     $crousal_image_data[] = array(
      'crousal_image'   => $crousal_image, 
      'link'      => $crousal_image['link'], 
      'name'      => $crousal_image['name'], 
      'crousal_id'    => $crousal_image['crousal_id'], 
      'image'     => $crousal_image['image'], 
      'sort_order'    => $crousal_image['sort_order'] 
     ); 
    } 

    return $crousal_image_data; 
} 
+0

看起來像模塊不清楚。請提供有關模塊和數據庫表結構的更多信息 –

+0

我編輯了問題並添加了有關模塊和數據庫結構的更多信息 –

回答

1

我沒有審查該模塊。看起來像這個模塊有完全錯誤的結構。正如您在方法addCrousal foreach-statement中看到的那樣插入數據庫。但是在這個插入carousal_id不會遞增,所以在表中將會記錄不是唯一的carousal_id。所以這個專欄不能是主要的。 我建議你用關係(有很多)「圖像」兩個表格「幻燈片」重寫模塊。或者你可以刪除PRIMARY索引,操作會通過,但這不是真正的解決方案。

+0

如果我理解您所說的話,您指的是創建數據庫並在它們之間存在關係我們添加classify旋轉木馬項目查詢。我想提一下,我已經複製了默認的Opencart Banner mod並對其進行了修改,並且Carousel是一個列表,而不是多列表,因爲它帶有Opencart> Banners –

+0

ya。但是,嘿。爲什麼不使用默認模塊Carousel而不是橫幅? –

+0

因爲我正在爲移動應用程序創建一個API,它將使用它自己的數據庫和工作流 –

相關問題