在 mysql 中设置一个唯一列并在 codeigniter 中显示 flashdata
Posted
技术标签:
【中文标题】在 mysql 中设置一个唯一列并在 codeigniter 中显示 flashdata【英文标题】:setting up a unique column in mysql and showing flashdata in codeigniter 【发布时间】:2021-11-23 14:26:38 【问题描述】:我有一个 codeigniter 网站,我有一个唯一的列,要求用户使用输入字段插入数据,如果用户尝试在默认情况下在列中添加重复值,则不会插入数据,所以我试图根据它设置flash数据:
function import_domestic_excel_data()
if(isset($_FILES["file"]["name"]))
$path = $_FILES["file"]["tmp_name"];
$object = phpExcel_IOFactory::load($path);
foreach($object->getWorksheetIterator() as $worksheet)
$highestRow = $worksheet->getHighestRow();
$highestColumn = $worksheet->getHighestColumn();
for($row=2; $row<=$highestRow; $row++)
$sendername = $worksheet->getCellByColumnAndRow(0, $row)->getValue();
$senderreference = $worksheet->getCellByColumnAndRow(1, $row)->getValue();
if(!empty($sendername))
$data[] = array(
'sendername' => $sendername,
'senderreference' => $senderreference,
);
$response=$this->excel_import_model->insert_excel($data);
if($response)
$this->session->set_flashdata("Success","Data Added Successfully !");
redirect('listconsignment' , 'refresh');
else
$this->session->set_flashdata("Error","Data Upload Error !");
redirect('listconsignment' , 'refresh');
现在的问题是,无论结果如何,如果数据被上传或数据没有被上传,我只会得到 flashdata 中设置的错误消息,而不仅仅是 flashdata,我尝试简单地回显“错误”和“成功” ,如果数据成功上传,也会出现回显错误。谁能告诉我这里有什么问题。提前致谢
【问题讨论】:
【参考方案1】:我认为问题在于您将set_flashdata
放入foreach
:
foreach ($object->getWorksheetIterator() as $worksheet)
...
也许在循环的最后一个$worksheet
上总会有一个$response = false
。所以会话总是会出错。在foreach外面拿块检查$response就可以解决这个问题:
$result = false;
foreach ($object->getWorksheetIterator() as $worksheet)
....
$response = $this->excel_import_model->insert_excel($data);
if ($response)
$result = true; // Change to condition to set true to what you want
if($result)
$this->session->set_flashdata("Success", "Data Added Successfully !");
redirect('listconsignment', 'refresh');
else
$this->session->set_flashdata("Error", "Data Upload Error !");
redirect('listconsignment', 'refresh');
【讨论】:
试过了,同样的错误。只有数据上传错误快闪来了 您能否echo $result
确保它是正确的值
并确保您以正确的方式从会话中获取值,例如:$this->session->flashdata('Success');
我认为如果您只是回显“错误”和“成功”,但它可能不起作用你得到的会话值有问题以上是关于在 mysql 中设置一个唯一列并在 codeigniter 中显示 flashdata的主要内容,如果未能解决你的问题,请参考以下文章