【发布时间】:2018-07-24 14:45:22
【问题描述】:
我想遍历查询的结果,然后将每个结果与输入字段进行比较,如果值重复,则必须返回 false,否则结果为 true,我知道我可以使用数据库中的唯一索引来避免重复值,然后捕获错误,但在这种情况下,重复值是可能的,但它们不能都是“活动的”,有一个名为“状态”的列,有两个值 A 或 I(活动和非活动)所以“clabe”值只能在一个处于活动状态而另一个处于非活动状态时重复。 控制器:
function agregar()
{
$this->load->helper('date');
date_default_timezone_set('America/Mexico_City');
$now = date('Y-m-d H:i:s');
$Interno = $this->input->post('intern');
$clabe = $this->input->post('clabe2') . $this->input->post('control2');
$cve_banco = $this->input->post('cve_banco');
$Banco = $this->input->post('Banco2');
$Observaciones = $this->input->post('Observaciones');
$data = array(
'Interno' => $Interno,
'clabe' => $clabe,
'cve_banco' => $cve_banco,
'Banco' => $Banco,
'Observaciones' => $Observaciones,
'Fecha_alta' => $now,
);
if($this->consultas_M->insert($data) == true){
//redirect('Inicio/busqueda', 'refresh');
} else{
echo "Hubo un problema al insertar";
}
}
型号:
function insert($data)
{
$clabe = $this->input->post('clabe2') . $this->input->post('control2');
$this->db->select('Clabe');
$this->db->where('Status =', 'A');
$query= $this->db ->get('cuentas');
return $query->row();
foreach ($query as $row) {
$i = $row;
if ($clabe = $i) {
return false;
} else {
$this-> db -> insert('cuentas', $data);
if ($this->db->affected_rows() > 0) {
return true;
}
}
}
}
【问题讨论】:
-
哪些列组合可以是唯一的?
-
移除
return $query->row();以便在您的模型中进行进一步处理 -
唯一唯一的列是“Interno”,即员工编号或 ID。
-
"但在这种情况下,重复值是可能的,但它们不能都是“活动的”,有一个名为“状态”的列,有两个值 A 或 I(活动和非活动)所以“clabe”值只能在一个处于活动状态而另一个处于非活动状态时重复。”这听起来像是复合键的情况
-
在 2 列上添加唯一键
标签: php mysql codeigniter