我基本上是为用户运行一个上传文件,其中包含我在codeigniter上开发的应用程序的信息。它从文件中获取一行,如果条目不存在则更新表。
但我想首先检查条目是否已存在于数据库中。万一它应该移动到下一个元素。
以下是我的模型代码。
function upload($file_name){
$file = './uploads/'.$file_name;
$this->load->library('excel');
$objPHPExcel = PHPExcel_IOFactory::load($file);
$cell_collection = $objPHPExcel->getActiveSheet()->getCellCollection();
foreach ($cell_collection as $cell) {
$column = $objPHPExcel->getActiveSheet()->getCell($cell)->getColumn();
$row = $objPHPExcel->getActiveSheet()->getCell($cell)->getRow();
$data_value = $objPHPExcel->getActiveSheet()->getCell($cell)->getValue();
if ($row == 1) {
$header[$row][$column] = $data_value;
} else {
$arr_data[$row][$column] = $data_value;
}
}
//send the data in an array format
$data['header'] = $header;
$data['values'] = $arr_data;
foreach ($arr_data as $q){
$data = array(
't_ref'=>$q['A'],
't_name'=>ucwords($q['B']),
't_cnic'=>$q['C'],
't_dept'=>$q['D'],
'status'=>$q['E']
);
$this->db->select('t_cnic');
$this->db->where('t_cnic',$q['C']);
$this->db->from('tbl_users');
$query = $this->db->get();
if($query->num_rows()>0){
break;
}else{
$this->db->insert('tbl_users',$data);
}
}
$msg = "Successfully Added";
return $msg;
}
(休息不会转移到下一个元素)
我怎样才能移动到下一个元素而不是只是在找到表中已存在CNIC的条目时停止循环。
答案 0 :(得分:2)
将break
替换为continue:
if($query->num_rows()>0) {
continue;
} else {
continue在循环结构中用于跳过当前循环迭代的其余部分,并在条件评估和下一次迭代开始时继续执行。
答案 1 :(得分:2)
你不需要打破或继续这里,只需整理逻辑:
if ($query->num_rows()==0) {
$this->db->insert('tbl_users',$data);
}
答案 2 :(得分:0)
你为什么不这样做
if($query->num_rows() === 0){
$this->db->insert('tbl_users',$data);
$msg = "Successfully Added";
} else {
$msg = "File Already exist";
}
return $msg;