codeigniter:数据未插入数据库

codeigniter:数据未插入数据库,codeigniter,codeigniter-3,Codeigniter,Codeigniter 3,目前我对codeigniter是新手。我试图通过表单将用户数据插入CodeIgniter3中的数据库 用户验证不起作用。表单只需提交,无需任何验证。我想我的代码都写对了 我也试过一些类似的问题,但对我没有帮助 控制器 public function signupvalidation() { $this->load->library('form_validation'); if($this->form_validatio

目前我对codeigniter是新手。我试图通过表单将用户数据插入CodeIgniter3中的数据库

用户验证不起作用。表单只需提交,无需任何验证。我想我的代码都写对了

我也试过一些类似的问题,但对我没有帮助

控制器

 public function signupvalidation()
    {
        $this->load->library('form_validation');
        
        if($this->form_validation->run('uservalidationsignup'))
        {
            $post = $this->input->post('user');
           
          
            $this->load->model('usermodel');

            if($this->usermodel->usersignup($post['rollno'],$post['name'],$post['password']))
            {
                $this->session->set_flashdata('insertsuccess','User Registration Successfully');
          return redirect('user/signupuser');
            }

            else
            {
                echo "error!!!!!!!!";
            }
    
        } 
        else
        {
           echo "form not submitted";
        }

    }
型号


class usermodel extends CI_Model
{

    public function usersignup($roll,$name,$password)
    {
        $data = array(
            'roll' => $roll,
            'name' => $name,
            'password' => $password

        );
        

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

}
查看

<div class="container mt-5 text-center">
    <div class="row">
        <div class="col-sm-12 col-lg-12 col-md-12">

          <?php echo form_open('User/signupvalidation', array(
    'class' => 'form-signin'
)); ?>

  <div class="text-center mb-4">
    <img class="mb-4" src="<?php echo base_url('assets/img/logo1.png'); ?>" alt="" width="100" height="100">
    <h1 class="h3 mb-3 font-weight-normal"> Please Register here</h1>
    
  </div>

  <div class="form-label-group">
  
    <?php echo form_input(['name'=>'roll','type'=> 'text','class'=>'form-control' ,'placeholder'=> 'Your University Roll-no','autofocus']); ?>
    <label for="formGroupExampleInput">Your University Rollno</label>
  </div>

  <div class="form-label-group">
  <?php echo form_input(['name'=>'name','type'=> 'text','class'=>'form-control' ,'placeholder'=> 'Your University Roll-no','autofocus']); ?>
    <label for="formGroupExampleInput">Your Name</label>
  </div>

  <div class="form-label-group">
  <?php echo form_input(['name'=>'password','type'=> 'password','class'=>'form-control' ,'placeholder'=> 'Your University Roll-no','autofocus']); ?>
    <label for="inputPassword">Password</label>
  </div>


  <?php echo form_submit(['value'=>'Register','class'=>'btn btn-lg btn-primary btn-block fa-2x','type'=>'submit']) ?>
  <p class="mt-5 mb-3 text-muted text-center">&copy; 2017-2020</p>
</form>
        </div>
    </div>
</div>

“alt=”“width=“100”height=“100”>
请在这里登记
你的大学罗尔诺
你的名字
密码

©;2017-2020

错误

 public function signupvalidation()
    {
        $this->load->library('form_validation');
        
        if($this->form_validation->run('uservalidationsignup'))
        {
            $post = $this->input->post('user');
           
          
            $this->load->model('usermodel');

            if($this->usermodel->usersignup($post['rollno'],$post['name'],$post['password']))
            {
                $this->session->set_flashdata('insertsuccess','User Registration Successfully');
          return redirect('user/signupuser');
            }

            else
            {
                echo "error!!!!!!!!";
            }
    
        } 
        else
        {
           echo "form not submitted";
        }

    }
它总是显示未提交的表单,这意味着它进入其他部分

为了调试,我使用了
var\u dump($data)
它显示
NULL
表示数据未通过表单。如何解决此错误。


谢谢

您没有在控制器中正确使用表单验证,请检查以下代码:

还要检查我在if子句中所做的更改:
Set_rules tacks 4参数:
(1) 字段名称-您为表单字段指定的确切名称。
(2) 此字段的“人员”名称,将插入到错误中 消息。
(3) 此表单字段的验证规则。
(4) (可选)在为当前字段给定的任何规则上设置自定义错误消息。如果 未提供将使用默认值

 public function signupvalidation()
    {
        $this->load->library('form_validation');
//we have to write rules for fields in the form ,which we want to validate
 
    $this->form_validation->set_rules('name', 'Name', 'required');
    $this->form_validation->set_rules('roll', 'Role', 'required');
    $this->form_validation->set_rules('password', 'Password', 'required');
 
 
        if($this->form_validation->run()) //changed here
        {
            $post = $this->input->post('user');
           
          
            $this->load->model('usermodel');

            if($this->usermodel- 
                    >usersignup($post['rollno'],$post['name'],$post['password']))
            {
            $this->session->set_flashdata('insertsuccess','User Registration Successfully');
          return redirect('user/signupuser');
            }

            else
            {
                echo "error!!!!!!!!";
            }
    
        } 
        else
        {
           echo "form not submitted";
        }

    }

为什么不按照?查看控制器代码与代码的区别。实际上,如果代码通过“表单未提交”部分,是因为表单验证未通过。这就是为什么没有插入数据。如果显示正在运行的验证,可能会有所帮助,因为
$this->form\u validation->run('uservalidationsignup');
没有太多说明。我建议将
打印验证错误();
的“表单未提交”替换为“表单未提交”,这样您就可以确切地了解验证失败的原因