无法将 POST 个变量插入数据库

Unable to insert POST variables into database

我是 CodeIgniter 的初学者,我正在尝试将从 post 获得的值插入到我的数据库中,为此我使用了以下代码:

查看Class:

<form method="POST">
    <label>Username</label>
    <input type="text" name="username"/>
    <br/>
    <label>Password</label>
    <input type="password" name="password"/>
    <br/>
    <button type="submit" name="login">Sign In</button>
    </form>

控制器Class:

class Auth extends CI_Controller{
    public function index(){
        $this->load->model("membership_model");
        $username=$this->input->post('username');
        $password=$this->input->post('password');
        $content='';
        return $this->load->view('auth/login');
        if(isset($_POST["username"]) && isset($_POST["password"])){
            $content['data'] = $this->membership_model->create_user($username,$password);
        }
}

型号Class:

class Membership_model extends CI_Model {
         public function create_user($username,$password){
            $this->db->set('display_name',$username);
             $this->db->set('password',$password);
             $this->db->insert("table1");
             return true;
         }
     }

但是当我点击提交时,出于某种原因,我的数据库中没有任何数据。

提前致谢。

以下代码应该可以正常工作。

控制器修改:

<?php

namespace App\Controllers;

use CodeIgniter\Controller;

    class Auth extends Controller{
        public function index(){
            if($this->input->method() == "post") {
                $this->load->model("membership_model");
                $username=$this->input->post('username');
                $password=$this->input->post('password');
                $content='';
                
                if(isset($_POST["username"]) && isset($_POST["password"])){
                    $content['data'] = $this->membership_model->create_user($username,$password);
                }
            }
            return $this->load->view('auth/login');
    }

模型修改:

public function create_user($username, $password){
    $data = array(
        'display_name'=>$username,
        'display_name'=>$password
    );
    $this->db->insert("table1", $data);
    return ($this->db->affected_rows() != 1) ? false : true;
}

数据未进入您的数据库但未显示任何错误的原因有很多。其中一些包括:

  • 您的表单中没有操作属性,因此页面会重新加载。您应该将路由放到处理数据的控制器,例如“/auth”作为您的操作属性
  • 数据库有某种限制,阻止数据输入。例如,您可能不小心在数据库中的某个字段上设置了 NOT NULL 约束。因此记录不会输入,因为该字段为空

您在提交表单时没有添加任何操作终点。所以它基本上是刷新页面。所以你应该做

  1. 在您的路线中指定操作 url。
  2. 如果仍然没有解决,请检查数据库字段并检查您传递的值是否为空。

我想我明白了问题所在。您在将数据插入数据库的过程之前调用 return $this->load->view('auth/login');。尝试改变你的

控制器 Class 来自:

class Auth extends CI_Controller{
    public function index(){
        $this->load->model("membership_model");
        $username=$this->input->post('username');
        $password=$this->input->post('password');
        $content='';
        return $this->load->view('auth/login');
        if(isset($_POST["username"]) && isset($_POST["password"])){
            $content['data'] = $this->membership_model->create_user($username,$password);
        }
}

至:

class Auth extends CI_Controller{
    public function index(){
        $this->load->model("membership_model");
        $username=$this->input->post('username');
        $password=$this->input->post('password');
        $content='';
        if(isset($_POST["username"]) && isset($_POST["password"])){
            $content['data'] = $this->membership_model->create_user($username,$password);
        }
        return $this->load->view('auth/login');

}