我试图从表单中获取数据并将其发送到下面的模型,以将数据输入数据库表用户。
我的控制器(类登录)包含以下代码:
类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) }
答案 0 :(得分: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文档中阅读更多相关信息