【问题标题】:Return POST data in CodeIgniter model?在 CodeIgniter 模型中返回 POST 数据?
【发布时间】:2013-07-10 22:40:22
【问题描述】:

我正在尝试从表单中获取我的数据并将其发送到我下面的模型以将数据输入到数据库表用户中。

我的控制器(登录类)具有以下代码:

类登录扩展 CI_Controller {

function __construct()
{
    parent::__construct();
    $this->load->model('Login_model');      
 }

 public function index()
 {
    $data = array(
    'gid'   =>  $this->input->post('gid'),
    'name'  =>  $this->input->post('name'),
    'pic'   =>  $this->input->post('pic'),
    'link'  =>  $this->input->post('link')
);
var_dump($data);
$this->Login_model->insert_entry($data);
 }

}

在我的模型中,我有以下内容:

class Login_model extends CI_Model {

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

   function insert_entry($data)
   {
       $this->db->insert('users', $data);
    }
}

我目前的问题是我认为我的模型没有正确获取数据。我一直在使用网址:

domain.com/login?field1=John&field2=Dave&field3=Barry&field4=Ted

如果我做一个 var 转储似乎返回以下而不是数据:

array(4) { ["gid"]=> bool(false) ["name"]=> bool(false) ["pic"]=> bool(false) ["link"]=> bool(false) }

【问题讨论】:

    标签: codeigniter


    【解决方案1】:

    这里有一些问题:

    1. insert_entry() 的第一行中有一个减号 (-) 而不是等号 (=)
    2. 通过 URL 发送的数据是 GET 数据(使用 CI 的 form_open();默认为 POST)
    3. 您的数据库字段和数组中的数据可能不匹配,并且您可能会同时发送诸如“提交”之类的无关数据

    【讨论】:

    • 对不起 - 我更新了我的代码,因为我发现我做错了,但是我被难住了。看看你的第 2 点,这就解决了:)
    【解决方案2】:

    在您的控制器中,您可以将 POST 数据作为 insert_entry() 函数的参数发送:

    $this->Login_model->insert_entry($this->input->post());
    

    insert_entry() 函数的第一行中还有一个减号代替等号。您可以将您的 insert_entry() 函数更改为以下内容:

    function insert_entry($data) {
        $this->db->insert('users', $data);
    }
    

    注意:请记住在尝试将其提交到数据库之前验证此数据。

    我看到的另一个问题是您正在搜索 POST 数据,但 URL 正在发送 GET 数据。有多种方法可以解决这个问题,其中最简单的方法是检查 GET 流。您可以使用以下任一方法:

    $this->input->get();
    

    或:

    $this->input->get_post();
    

    第一个将检查您的 GET 数据,而第二个将检查 GET 和 POST,从 POST 开始。

    在您的控制器中,假设这些字段在您的 GET 数据中,您可以执行以下操作:

    $data = array(
        'gid'   =>  $this->input->get('gid'),
        'name'  =>  $this->input->get('name'),
        'pic'   =>  $this->input->get('pic'),
        'link'  =>  $this->input->get('link')
    );
    

    您可以在 http://ellislab.com/codeigniter/user-guide/libraries/input.html 的 CodeIgniter 文档中阅读更多相关信息

    【讨论】:

      猜你喜欢
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 2014-12-07
      • 1970-01-01
      相关资源
      最近更新 更多