【发布时间】:2020-03-28 19:35:30
【问题描述】:
如果我有一个名为“dbo.Usuarios”的表,我在使用 Codeigniter 3 时遇到问题,如何在 is_unique 验证中插入?问题在于_unique 用点分隔表和列。
问题来了:
$is_unique = '|is_unique[dbo.Usuarios.Email]';
你怎么看,我的表名有一个点,所以系统把"dbo"当作表名,"Usuarios"当作列名。
这里是完整的代码:
$id= $this->session->userdata('user_id');
$tablas = $this->db->query('SELECT * FROM dbo.Usuarios WHERE ID ='.$id.'');
foreach ($tablas->result_array() as $row){
$samemail = $row['Email'];
}
if($this->input->post('email') != $samemail) {
$is_unique = '|is_unique[dbo.Usuarios.Email]';
}
else {
$is_unique = '';
}
$this->form_validation->set_rules('emailf', 'Email', 'trim|required|valid_email|max_length[20]'.$is_unique);
if ($this->form_validation->run() == FALSE)
{
$this->session->set_flashdata('emailunico', 'El Email ingresado ya esta asociado a otra cuenta.');
redirect('escritorio');
}
else {
#othercode
}
【问题讨论】:
-
你为什么使用
dbo.作为前缀? -
你真的不应该在表名中使用
.。标准建议是使用 unsercores_代替,因为句点被解释为模式和表名之间的“边界”。话虽如此,is_unique验证方法不支持schema.table.field参数(它只需要一个表字段对),因此您需要修改或扩展form_validation库才能为您工作跨度> -
为了记录,我决定使用 dbo。作为前缀,感谢@M.Hemant 的建议
标签: php codeigniter codeigniter-3