无法将 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
约束。因此记录不会输入,因为该字段为空
您在提交表单时没有添加任何操作终点。所以它基本上是刷新页面。所以你应该做
- 在您的路线中指定操作 url。
- 如果仍然没有解决,请检查数据库字段并检查您传递的值是否为空。
我想我明白了问题所在。您在将数据插入数据库的过程之前调用 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');
}
我是 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
约束。因此记录不会输入,因为该字段为空
您在提交表单时没有添加任何操作终点。所以它基本上是刷新页面。所以你应该做
- 在您的路线中指定操作 url。
- 如果仍然没有解决,请检查数据库字段并检查您传递的值是否为空。
我想我明白了问题所在。您在将数据插入数据库的过程之前调用 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');
}