【问题标题】:data not inserted in database in codeigniter 3数据未在codeigniter 3中插入数据库
【发布时间】:2021-11-25 10:39:42
【问题描述】:

我对 codeigniter 还是很陌生。目前我正在尝试从表单的输入字段将数据插入我的本地数据库。没有弹出错误,但输入的数据未显示在我的数据库中。我一直在查看我的 admin-index 文件、admin(controller) 文件和 admin_model 文件。但是代码很容易理解。找不到错误。如果数据库连接是问题,我确信它已成功连接,因为我可以登录(尤其是使用不同的用户类型)。以下是我的代码。感谢任何可以分享想法的人:)

admin.php(控制器)

<?php 
defined('BASEPATH') OR exit('No direct script access allowed');

class Admin extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        //$this->load->model('Admin_model');
    }

    public function add()
    {
        $newData = array(
            'fname'     =>$this->input->post('firstName'),
            'lname'     =>$this->input->post('lastName'),
            'uname'     =>$this->input->post('userName'),
            'pword'     =>$this->input->post('passWord'),
            'utype'     =>$this->input->post('userType')
        );
        $this->load->model('Admin_model');
        $this->Admin_model->add_user($newData);   
    }
}

admin_model.php

<?php 


class Admin_model extends CI_Model
{
    public function __construct()
    {   
        parent::__construct();
        $this->load->database();
    }

    public function add_user($data)
    {
        $this->db->insert('tblaccount', $data);

        //echo($newData);
    }

}

admin-index.php

<form>
  <div class="form-group" action="<?php echo base_url(); ?>admin/add" method="POST">
    <label>First Name</label>
    <input type="text" name="firstName" class="form-control">
  </div>
  <div class="form-group">
    <label>Last Name</label>
    <input type="text" name="lastName" class="form-control">
  </div>
  <div class="form-group">
    <label> Username</label>
    <input type="text" name="userName" class="form-control">
  </div>
  <div class="form-group">
    <label>Password</label>
    <input type="password" name="passWord" class="form-control">
  </div>
  <div class="form-group">
    <label>UserType</label>
    <input type="text" name="userType" class="form-control">
  </div>
  <button type="submit" name="submit" value="submit" class="btn btn-primary">Submit</button>
</form>

【问题讨论】:

  • 您从哪里发送数据?尝试使用 $this->input->post() 从帖子中获取数据;而不是插入它。
  • 我在 add() 函数下的 admin.php(controller) 中使用了该行代码。如您所见,我的 html 表单的操作值 = action="admin/add",从我的控制器 admin.php 调用管理类,add() 函数。
  • 嗨,我认为问题出在 $this->Admin_model->add_user($newData);像这样调用 $this->admin_model->add_user($newData);
  • Umefarooq 是正确的。当您为模型命名时,请使用大写字母。在代码中使用时,模型名不要大写
  • 哦是这样。好吧,它现在起作用了。我认为我的模型即使被称为大写也能被识别,问题根本不在函数中(“模型/控制器”)。 method="post" 未被识别,因为它被放置在 div 标签下,它应该在表单上。但是,嘿,感谢您分享想法。真的很感激

标签: php codeigniter


【解决方案1】:

我想我现在明白了。我刚刚将 action="admin/add" method="POST" 代码行从 div 标签转移到 form 标签。有效!!!。起初,我在我的 html 表单中观察了我的 POST 方法的行为。这有点奇怪,因为它就像一个 GET 方法(用户输入显示在 url 中)。然后我初步推断可能method="POST" 没有被识别。

这是我的 html 表单上的最终代码:

<form action="<?php echo base_url(); ?>admin/add" method="POST">
  <div class="form-group">
    <label>First Name</label>
    <input type="text" name="firstName" class="form-control" value="<?php echo set_value('firstName'); ?>">
  </div>
  <div class="form-group">
    <label>Last Name</label>
    <input type="text" name="lastName" class="form-control" value="<?php echo set_value('lastName'); ?>">
  </div>
  <div class="form-group">
    <label> Username</label>
    <input type="text" name="userName" class="form-control" value="<?php echo set_value('usernName'); ?>">
  </div>
  <div class="form-group">
    <label>Password</label>
    <input type="password" name="passWord" class="form-control" value="<?php echo set_value('passWord'); ?>">
  </div>
  <div class="form-group">
    <label>UserType</label>
    <input type="text" name="userType" class="form-control">
  </div>
  <button type="submit" name="submit" value="submit" class="btn btn-primary">Submit</button>
</form>

问题根本不在于功能(模型/控制器)。 顺便说一句,感谢所有分享想法的人,我真的很感激:)

【讨论】:

  • 欢迎来到 Stack Overflow,我只想说谢谢你在自己弄清楚之后分享你的答案:)
  • 是的,也谢谢你。这里的社区真好
【解决方案2】:

在模型函数中打印您的查询并查看错误是什么

public function add_user($data)
{
    $this->db->insert('tblaccount', $data);
    echo $this->db->last_query();
    exit();
}

【讨论】:

  • 我应该输入准确的代码吗? echo $this->db->last_query()?
  • 是的,执行代码,查看浏览器的响应
  • 我刚刚做了先生。什么也没发生。我应该在哪里查看回复?浏览器上的响应是什么意思?我应该使用开发者的工具吗?
  • print_r($data);exit(); $this->db->insert('tblaccount', $data); 之前检查您是否正在获取数据。在您的浏览器中。不在开发者工具中
  • 你的数据列和表格列完全一样吗?
猜你喜欢
  • 2021-09-19
  • 2021-02-07
  • 1970-01-01
  • 2013-03-28
  • 1970-01-01
  • 2016-10-21
  • 1970-01-01
  • 2015-10-07
  • 1970-01-01
相关资源
最近更新 更多