在CodeIgniter模型中返回POST数据?

时间:2013-07-10 22:40:23

标签: codeigniter

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

我的控制器(类登录)包含以下代码:

类Login扩展了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) }

2 个答案:

答案 0 :(得分:3)

这里有一些问题:

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

答案 1 :(得分:1)

在您的控制器中,您可以将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文档中阅读更多相关信息