在 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-&gt;session-&gt;flashdata('Success'); 我认为如果您只是回显“错误”和“成功”,但它可能不起作用你得到的会话值有问题

以上是关于在 mysql 中设置一个唯一列并在 codeigniter 中显示 flashdata的主要内容,如果未能解决你的问题,请参考以下文章

sql2005中设置字段属性时,如何设标识列(自增1)和必须唯一

Mysql中设置默认时间为当前值

如何在mysql中设置唯一索引

mysql:创建虚拟列湿设置默认值

如何在MySQL中设置外键约束以及外键的作用

如何在 sql 中设置变量并在选择查询中使用它来显示和执行对该变量的操作(MAX MIN)?