如何在ci中插入表单值?

时间:2017-05-16 07:46:22

标签: php codeigniter mysqli

controller:Test.php

<?php
class Test extends CI_Controller {
    public function index()
    {
        $this->load->helper(array('form', 'url'));
        $this->load->model('Users_model');
        $this->Users_model->insert_user();
        $this->load->view('home');
    }
}

&GT;

型号:User_model.php

<?php
    class Users_model extends CI_Model
    {
        public function insert_user()
        {    
            $data = array(
                'name' => $this->input->post('name'),
                'email' => $this->input->post('email'),
                'message' => $this->input->post('message')
            );
            return $this->db->insert('user', $data);
        }   
    }
?>

查看:home.php

<form method="post">
    <label for="name">your Name</label>
    <input class="form-control" id="name" type="text" placeholder="Name" name="name" />

    <label for="email">Your email</label>
    <input class="form-control" id="email" type="text" placeholder="Email" name="email" />

    <label for="message">Your Message</label>
    <textarea class="form-control" id="message" placeholder="Message" name="message"></textarea>
    <button type="submit">send</button>
</form>

我是codeigniter的新手,我想将表格值插入数据库,但它显示一些错误,即

enter image description here

如何修复此错误?请帮忙。

谢谢

4 个答案:

答案 0 :(得分:3)

您收到错误是因为您在表单中提交的任何数据之前调用了User_model->insert_user()。您应该检查是否有任何发布的数据,然后保存到数据库。以下是您的控制器的示例:

<?php
class Test extends CI_Controller {
    public function index()
    {
        $this->load->helper(array('form', 'url'));
        $this->load->model('Users_model');
        
        // do checking right here
        if (!empty($this->input->post('name'))) {
            $this->Users_model->insert_user();
        }
        
        $this->load->view('home');
    }
}

答案 1 :(得分:0)

您忘记在控制器中插入模型的插入方法中传递POST数据。

位指示

 <?php
    class Test extends CI_Controller {
        public function index()
        {
$data = array(
                'name' => $this->input->post('name'),
                'email' => $this->input->post('email'),
                'message' => $this->input->post('message')
            );
            $this->load->helper(array('form', 'url'));
            $this->load->model('Users_model');
            $this->Users_model->insert_user($data );
            $this->load->view('home');
        }
    }

模型

<?php
    class Users_model extends CI_Model
    {
        public function insert_user($data = [])
        {    

            return $this->db->insert('user', $data);
        }   
    }
?>

答案 2 :(得分:0)

您扩展 CI_Model 但未调用父构造。使用此:

    function __construct() {
       // Call the Model constructor
       parent :: __construct();
    }

希望这会奏效。感谢。

答案 3 :(得分:0)

在你的&#34; home.php&#34;你还没有指定一个动作属性。由于此表格价值未发布。

例如: - span

然后尝试在控制器中获取表单的值。

在控制器中,请执行此<form action="<?php echo base_url();?>YourfileName/DeclaredFunctionName" method="post">

如果您在浏览器中获取值,请删除exit()并执行代码。否则,请在此处分享您的错误。

由于