gpt4 book ai didi

php - 在 insert_batch codeigniter 中捕获错误

转载 作者:行者123 更新时间:2023-11-29 06:13:33 26 4
gpt4 key购买 nike

我混合使用 ajax 和 codeigniter 来进行多次插入。

代码是这样的:

JS

function save(path){
$.ajax({
url: "<?php echo site_url('members/megumi/container_list/import_from_csv'); ?>",
type: 'post',
data: {path: path},
success: function (response) {
reload_table();
$('#modal_form').modal('hide'); // show bootstrap modal

}
});
return false;
}

PHP 代码点火器

 public function import_from_csv(){
$csv = $this->input->post('path');

$tryOne = array();

if (file_exists($csv)) {
$file = fopen($csv, 'r'); // r flag is for readonly mode

while (( $line = fgetcsv($file) ) !== false) { // if line exists
$tryOne[] = $line; // add to array

}
fclose($file);
}

$tryOne = array_map(function($insert){
return array(
'CONSIGNEE' => $insert[1],
'CONTAINER' => $insert[2],
'SEAL' => $insert[3],
'THICK' => $insert[4],
'WIDTH' => $insert[5],
'SIZE' => $insert[6],
'COAT' => $insert[7],
'SPEC' => $insert[8],
'COIL_NO' => $insert[9],
'QTY' => $insert[10],
'PALET' => $insert[11],
'NET' => $insert[12],
'GROSS' => $insert[13],
'CONTRACT_NO' => $insert[14],
'TGL_TRANSFER' => $insert[15],
'LENGTH' => $insert[16],
'GRADE' => $insert[17],
'NO_URUT' => $insert[18]

);
}, $tryOne);

$insert = $this->container->insert_batch_data($tryOne);
echo json_encode($insert);
}

假设多次插入失败,因为我的 MySQL 表中有 UNIQUE 列。我在 Firebug 上遇到了这个错误:

A Database Error Occurred

Error Number: 1062

Duplicate entry '02NKTL216036109-2-1/8 ' for key 'COIL_NO'

我怎样才能向普通用户显示这样的错误:“抱歉,出现问题,请检查您上传的 CSV”。

这可能吗?

最佳答案

您所要做的就是修改您使用 insert_batch()insert_batch_data() 方法,如下所示

$this->db->db_debug = false;
// .....
$insert = $this->db->insert_batch('table_name', $tryOne);
if($insert > 0){
$test = TRUE;
}else{
$test = FALSE;
}
return $test;

现在在 Controller import_from_csv()

echo json_encode($insert);

这会将 bool 值发送到您的 ajax。或者您可以根据您的要求返回任何数据。所以技巧是使用 $this->db->db_debug = false;

隐藏数据库错误

您可以使用 config.php 隐藏所有数据库错误,其中 db_debug 选项可设置为 FALSE

关于php - 在 insert_batch codeigniter 中捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37109567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com