尝试插入数据库时遇到麻烦。
看我的控制器:
public function cadastrar(){
$var = $this->input->post(null, TRUE);
$this->load->model('m_clientes');
$this->m_clientes->inserir($var);
}
我的控制器在这里简化了,因为我知道如何在codeigniter中处理数据库。
这篇文章的结果是:
Array ( [nome] => Raphael [sobrenome] => Schubert [cpf] => 893.528.432-89 [rg] => 4529875231908472 [telefone] => (53) 2980-5792 [celular] => (53) 9 2180-7529 [rua] => Israel de Almeida [numero] => 859 [cep] => 88.312-000 [bairro] => São Vicente [cidade] => ITAJAÍ [estado] => Santa Catarina [email] => rfswdp@gmail.com [tipo] => pf [cnpj] => 34.827.481/2834-78 [inscricaoestadual] => 34120489032814930128 [razaosocial] => Teste [nomefantasia] => Disney [dataaberturaempresa] => 10/21/15 [proprietario] => Marcos Aurelio )
我通常使用这种方式插入:
$data = array(
'user_name' => $this->input->post('user_name',TRUE);
'user_phone' => $this->input->post('user_phone',TRUE);
'user_role' => $this->input->post('user_role',TRUE);
);
$this->name_of_model->inserir($data);
和作品...
但是我试图只使用$ this-> input-> post();从表单获取所有字段。因为我的应用程序实际上将有数百个字段,而我试图不写每一行。
所以我的模型实际上是:
public function inserir($var){
if($var!=NULL):
print_r($var);
$this->db->insert('tb_usuarios',$var);
endif;
}
但是我越来越错了:
消息:未定义的属性:Clientes :: $ db
和
消息:在null上调用成员函数insert()
我的表格名称是:“ tb_usuarios”
我将数据库中的所有字段都更改为接受NULL,以查看我是否弄错了某些字段名称...但不起作用...
有小费吗??
最佳答案
无需在$var
内捕获POST变量。您可以在模型中很好地看到POST变量。因此,您需要在控制器中做的就是:
public function cadastrar(){
$this->load->model('m_clientes');
$this->m_clientes->inserir();
}
,并在您的模型中:
public function inserir(){
if( count($this->input->post()) > 0):
$this->db->insert('tb_usuarios',$this->input->post());
endif;
}
表单中的字段名称必须与表中的列名称相对应。
消息:对null成员函数insert()的调用意味着您忘记加载数据库库,就像remiheens所说的那样。
但是我的建议是,对您的字段使用表单验证,因此您可以确保使用必填数据格式为每个必填字段填写所有必填字段。尽管这可能需要分配代码,但是没有其他安全的方法可以防止数据库操作出错。您不能信任用户正确插入数据,这就是为什么需要form validation的原因。
关于php - 使用$ this-> input-> post()尝试在数据库中插入数据时出现问题-Codeigniter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33126912/