我基本上爲用戶運行一個上傳文件,並在codeigniter上開發我的應用程序。它從文件中獲取一行,並在條目不存在時更新該表。移動到foreach循環中的下一個元素,如果條目已經在表中
但我想先檢查該條目是否已經在數據庫中。萬一它應該移動到下一個元素。
以下是我的型號代碼。
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;
}
(休息不動,以ofcourse下一個元素)
我如何可以移動到下一個元素,而不是僅僅停止時,它會發現網絡中心已經在表中現有的條目循環。
通常,「繼續」; ? – Roger
不知道如何在codeignitor中更改您的查詢,但可以使用ON DUPLICATE KEY UPDATE/IGNORE來更新現有的新行值(即使它們與舊值相同),也可以忽略更新並轉到下一個記錄..這就要求您的表至少有一個唯一索引或2列索引,這些索引在組合時必須是唯一的。 –