【问题标题】:How to insert form value in ci?如何在 ci 中插入表单值?
【发布时间】:2017-10-15 04:13:10
【问题描述】:

控制器: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');
    }
}

?>

型号: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 的新手,我想将表单值插入数据库,但它显示了一些错误,即

我该如何解决这个错误?请帮忙。

谢谢

【问题讨论】:

  • 为了调试,我建议在 `return $this->db->insert('user', $data);` 之前使用 var_dump($data); die;print_r($data); die; 以检查模型有数据,看起来数据为空。
  • 不需要控制器,模型在codeigniter codeigniter.com/user_guide/general/…末尾使用?&gt;
  • 它返回数组([name] => [email] => [message] =>)@max gilbert

标签: php codeigniter mysqli


【解决方案1】:

您收到错误是因为您在表单中提交任何数据之前调用了User_model-&gt;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');
    }
}

【讨论】:

    【解决方案2】:

    您忘记在控制器中模型的插入方法中传递 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);
            }   
        }
    ?>
    

    【讨论】:

      【解决方案3】:

      你扩展了 CI_Model 但没有调用父构造。使用这个:

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

      希望这会奏效。谢谢。

      【讨论】:

        【解决方案4】:

        在您的“home.php”中,您没有指定操作属性。由于此表单值未发布。

        例如:-&lt;form action="&lt;?php echo base_url();?&gt;YourfileName/DeclaredFunctionName" method="post"&gt;

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

        在控制器中请执行这个function insert_user() { print_r($_POST); exit(); }

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

        谢谢

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-14
          • 2018-06-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多