0

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

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

类登录扩展 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 dump 似乎返回以下而不是数据:

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

2 回答 2

3

你在这里有一些问题:

  1. 在 insert_entry() 的第一行有一个减号 (-) 而不是等号 (=)
  2. 通过 URL 发送的数据是 GET 数据(使用 CI 的 form_open();默认为 POST)
  3. 您的数据库字段和数组中的数据可能不匹配,并且您可能会发送无关数据,例如“提交”
于 2013-07-10T22:59:21.117 回答
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 文档中阅读更多相关信息

于 2013-07-10T23:10:10.663 回答