问题:使用php将xlsx文件上载到mysql时,会显示一个额外的字符,并显示所有值
我正在尝试上载xlsx文件。使用php和mysql。。但是我在数据库中的值后面有一个额外的符号。。like值为ETI5465,上传后变为ETI5465问题:使用php将xlsx文件上载到mysql时,会显示一个额外的字符,并显示所有值,php,mysql,Php,Mysql,我正在尝试上载xlsx文件。使用php和mysql。。但是我在数据库中的值后面有一个额外的符号。。like值为ETI5465,上传后变为ETI5465 if($_POST['action']=="addFile"){ $fname = $_FILES['sel_file']['name']; $path_info=pathinfo($fname); $ext=$path_info['extension']; $chk_ext = explode(
if($_POST['action']=="addFile"){
$fname = $_FILES['sel_file']['name'];
$path_info=pathinfo($fname);
$ext=$path_info['extension'];
$chk_ext = explode(".",$fname);
if(strtolower($chk_ext[1]) == "xlsx")
{
require 'simplexlsx.class.php';
$filename = $_FILES['sel_file']['tmp_name'];
// $handle = fopen($filename, "r");
$xlsx = new SimpleXLSX($filename);
list($cols, $rows) = $xlsx->dimension();
foreach($xlsx->rows() as $k => $data) { // LOOP THROUGH EXCEL WORKSHEET
if($k >'7'){
if($_POST['upload']=="excel1" && $cols<>'10')
{
$newdate=date('m/d/Y H:i:s A',$xlsx->unixstamp($data[4]));
$sql = "INSERT INTO vehicle_fuel_expenses (`company_code_nr`, `cartao`, `placa`, `modelo`, `responsavel`, `data_hora`, `transacao`, `tipo`, `liberacao_Restricao`, `motorista`, `matricula`, `estabelecimento`, `cidade`, `quilometragem`, `horas`, `servico`,`valor`,`km_rodados`,`horas_trabalhadas`,`litros`,`km_litro`,`litros_Hora`,`valor_Litro`,`ia_1`,`ia_2`,`ia_3`,`ia_4`,`ia_5`) VALUES ('".$_SESSION['company']."','$data[0]','$data[1]','$data[2]','$data[3]','$newdate','$data[5]','$data[6]','$data[7]','$data[8]','$data[9]','$data[10]','$data[11]','$data[12]',
'$data[13]','$data[14]','$data[15]','$data[16]','$data[17]','$data[18]','$data[19]','$data[20]','$data[21]','$data[22]','$data[23]','$data[24]','$data[25]','$data[26]')";
$inser=@mysql_query($sql) or die(mysql_error());
}
if($_POST['upload']=="excel2" && $cols=='3')
{
//$newdate=date('m/Y',$xlsx->unixstamp($data[4]));
$sql = "INSERT INTO vehicle_fuel_expenses_mensalidade1 (`company_code_nr`, `veículo`, `item_faturado`, `valor`) VALUES ('".$_SESSION['company']."','".addslashes($data[0])."','".addslashes($data[1])."','".addslashes($data[2])."')";
$inser=@mysql_query($sql) or die(mysql_error());
}
if($_POST['upload']=="excel3" && $cols=='10')
{
$sql = "INSERT INTO vehicle_toll_consumption_cost (`company_code_nr`, `placa`, `tag`, `prefixo`, `marca`, `categ`, `data`, `hora`, `rodovia`, `praca`,
`valor`) VALUES ('".$_SESSION['company']."','$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]','$data[9]')";
$inser=@mysql_query($sql) or die(mysql_error());
}
}
}
if($inser=='1')
{
echo '<script>alert("Importado com sucesso");</script>';
}
else
{
echo '<script>alert("Please Select A Valid File");</script>';
}
问题是由于数据库表使用的文件和字符集的编码。例如,如果DB表使用的字符集是utf8_general_ci,并且从中读取数据的文件以UTF-8编码,因为它可能是连接到DB后的文件,则必须执行命令SQL以设置正确的字符集,在这种情况下:
SET CHARACTER SET utf8