Произошла ошибка базы данных Номер ошибки: 1062 Повторяющаяся запись 5 для ключа PRIMARY

Каждый раз, когда я добавляю данные, он всегда запускается с идентификатором 5, поэтому, когда я добавляю другие данные, возникает ошибка ... Может ли кто-нибудь мне помочь?

A Database Error Occurred Error Number: 1062

Duplicate entry '5' for key 'PRIMARY'

INSERT INTO gallery (id_gallery, name, image) VALUES ('5bbd81467f388', 'steak', 'IMG_1232.JPG')

Filename: C:/xampp/htdocs/eat/system/database/DB_driver.php

Line Number: 691

Контроллер: Gallery.php

<?php defined('BASEPATH') OR exit('No direct script access allowed');

class Gallery extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->model("gallery_model");
        $this->load->library('form_validation');
    }

    public function index()
    {
        $data["gallery"] = $this->gallery_model->getAll();
        $this->load->view("admin/gallery/list", $data);
    }

    public function add()
    {
        $gallery = $this->gallery_model;
        $validation = $this->form_validation;
        $validation->set_rules($gallery->rules());

        if ($validation->run()) {
            $gallery->save();
            $this->session->set_flashdata('success', 'Berhasil disimpan');
        }

        $this->load->view("admin/gallery/new_form");
    }

    public function edit($id = null)
    {
        if (!isset($id)) redirect('admin/gallery');

        $gallery = $this->gallery_model;
        $validation = $this->form_validation;
        $validation->set_rules($gallery->rules());

        if ($validation->run()) {
            $gallery->update();
            $this->session->set_flashdata('success', 'Berhasil disimpan');
        }

        $data["gallery"] = $gallery->getById($id);
        if (!$data["gallery"]) show_404();

        $this->load->view("admin/gallery/edit_form", $data);
    }

    public function delete($id=null)
    {
        if (!isset($id)) show_404();

        if ($this->gallery_model->delete($id)) {
            redirect(site_url('admin/gallery'));
        }
    }
}

Модель: Gallery_model.php

class Gallery_model extends CI_Model
{
    private $_table = "gallery";
    public $id_gallery;
    public $name;
    public $image;

    public function rules()
    {
        return [
            ['field' => 'name',
            'label' => 'Name',
            'rules' => 'required']
        ];
    }

    public function getAll()
    {
        return $this->db->get($this->_table)->result();
    }

    public function getById($id)
    {
        return $this->db->get_where($this->_table, ["id_gallery" => $id])->row();
    }

    public function save()
    {
        $post = $this->input->post();
//        $this->id_gallery = uniqid();
        $this->name = $post["name"];
        $this->image = $this->_uploadImage();
        $this->db->insert($this->_table, $this);
    }

    public function update()
    {
        $post = $this->input->post();
        $this->id_gallery = $post["id"];
        $this->name = $post["name"];
        if (!empty($_FILES["image"]["name"])) {
            $this->image = $this->_uploadImage();
        } else {
            $this->image = $post["old_image"];
        }
        $this->db->update($this->_table, $this, array('id_gallery' => $post['id']));
    }

    public function delete($id)
    {
        $this->_deleteImage($id);
        return $this->db->delete($this->_table, array("id_gallery" => $id));
    }

    private function _uploadImage()
    {
        $config['upload_path']          = './upload/galery/';
        $config['allowed_types']        = 'gif|jpg|png|jpeg';
        $config['upload_max_filesize']  = '100000M';
        $config['post_max_size']        = '100000M';
        $config['file_name']            = basename($_FILES["image"]["name"]);
        $config['overwrite']            = true;

        $this->load->library('upload', $config);

        if ($this->upload->do_upload('image')) {
            return $this->upload->data("file_name");
        }
    }

    private function _deleteImage($id)
    {
        $gallery = $this->getById($id);
        if ($gallery->image != "default.jpg") {
            $filename = explode(".", $gallery->image)[0];
            return array_map('unlink', glob(FCPATH."upload/galery/$filename.*"));
        }
    }

}

Просмотры: new_form.php

<div class = "alert alert-success" role = "alert">
                        <?php echo $this->session->flashdata('success'); ?>
                    </div>
                    <?php endif; ?>
                    <div class = "card mb-3">
                        <div class = "card-header">
                            <a href = "<?php echo site_url('admin/gallery/') ?>"><i class = "fas fa-arrow-left"></i> Back</a>
                        </div>
                        <div class = "card-body">
                            <form action = "<?php base_url('admin/gallery/add')?>" method = "post" enctype = "multipart/form-data" >
                                <div class = "form-group">
                                    <label for = "name">Title*</label>
                                    <input class = "form-control <?php echo form_error('name') ? 'is-invalid':'' ?>"
                                     type = "text" name = "name" placeholder = "gallery name">
                                    <div class = "invalid-feedback">
                                        <?php echo form_error('name') ?>
                                    </div>
                                </div>
                                <div class = "form-group">
                                    <label for = "image">Photo</label>
                                    <input class = "form-control-file <?php echo form_error('name') ? 'is-invalid':'' ?>"
                                     type = "file" name = "image">
                                    <div class = "invalid-feedback">
                                        <?php echo form_error('image') ?>
                                    </div>
                                </div>
                                <input class = "btn btn-success" type = "submit" name = "btn" value = "Save" />
                            </form>
                        </div>
                        <div class = "card-footer small text-muted">
                            * required fields
                        </div>
                    </div>

Убедитесь, что значение этого идентификатора уникально и не дублируется: id_gallery

salah-1 10.10.2018 06:50

что ты имеешь в виду? можешь привести мне пример? @Salah

Kuroda Ayumu 10.10.2018 06:53

$ this-> id_gallery = uniqid (); Почему эта строка прокомментирована в Gallery_model.php?

Harshad Shettigar 10.10.2018 06:54

Ох .. Я понял, я вижу это в учебнике

Kuroda Ayumu 10.10.2018 06:58

Первичные ключи в БД уникальны. Проверьте, как этот идентификатор создается вашей моделью и передается методу сохранения. Если вам не нужны уникальные ключи, измените свою базу данных

salah-1 10.10.2018 06:59

Установлен ли id_gallery в качестве поля первичного ключа в вашей базе данных? Поля PK не могут содержать повторяющиеся записи.

herondale 10.10.2018 07:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
728
1

Ответы 1

Если вы используете Integer, попробуйте изменить поле типа для id_gallery с int-> PRIMARY на varchar-> PRIMARY и не используйте Auto Increment в своей базе данных. У меня работает: 3

Другие вопросы по теме