Обновление базы данных phpmyadmin с помощью codeigniter4 или codeigniter3 - PullRequest
0 голосов
/ 01 апреля 2020

Извините, я новичок в CI4 или CI3,

Я хочу обновить свою базу данных с помощью формы. Но он не может обновить, где я хочу, даже я помещаю код в него, если я удаляю код где, они обновят всю мою запись в моей базе данных, пожалуйста, я читал документацию CI4, и я до сих пор не могу понять, почему мой код не может определить код где.

вот мой полный код контроллера

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

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

    public function index()
    {

        $data['title'] = 'My Profile';
        $data['user'] = $this->db->get_where(
            'user',
            ['email' => $this->session->userdata('email')]
        )->row_array();

        $this->load->view('templates/header', $data);
        $this->load->view('templates/sidebar');
        $this->load->view('templates/topbar');
        $this->load->view('user/index');
        $this->load->view('templates/footer');
    }

    public function edit()
    {
        $data['title'] = 'Edit Profile';
        $data['user'] = $this->db->get_where(
            'user',
            ['email' => $this->session->userdata('email')]
        )->row_array();

        $this->form_validation->set_rules('name', 'Full Name', 'required|trim');


        if ($this->form_validation->run() ==  false) {
            $this->load->view('templates/header', $data);
            $this->load->view('templates/sidebar');
            $this->load->view('templates/topbar');
            $this->load->view('user/edit');
            $this->load->view('templates/footer');
        } else {
            //update data name / bio
            $name = $this->input->post('name');
            $email = $this->input->post('email');
            $bio = $this->input->post('bio');
            $data = array(
                "name" => $name,
                "bio"  => $bio,
            );
            $this->db->where('email', $email);
            $this->db->update('user', $data);

            $this->session->set_flashdata('message', '<div class="alert alert-success" style="text-align:center;" role="alert">
    Your profile has been updated!</div>');
            redirect('user/edit');
        }

    }
}

И я не использую никаких моделей: /

1 Ответ

1 голос
/ 01 апреля 2020

Комментарий от TimBrownlaw ниже отвечает на мой вопрос. Я должен go с первичным ключом в моей таблице в базе данных, не используя столбец электронной почты.

Новый код:

$name = $this->input->post('name');
$id = $this->input->post('id');
$bio = $this->input->post('bio');
$data = array(
                "name" => $name,
                "bio"  => $bio,
            );

$this->db->set($data);
$this->db->where('id', $id);
$this->db->update('user');
...