我找了又找,但几乎一无所获。我有一个 CSV 文件,我正在通过 php 脚本插入到 mysql 数据库中。尝试了许多不同的东西但无法使其正常工作。 CSV 字段被发送给我们,其中有一列格式为 currancy,尝试将其附加到带有 VARCHAR、INT、Decimal (10,2)、Float 的 mysql 表,几乎只是在列表中。它加载到表中并在使用 php substr($val,1) 摆脱 '$' 后正确显示在 VARCHAR 中,但使用 number_format($sum, 2,'.',',') 计算它;结果完全错误,比如 1,200.00 美元,而它应该是 3,456,789.00 美元。
如果我在导入之前手动将 CSV 列的格式更改为 TEXT,它工作正常,但这必须是自动化的。
关于将格式为 currancy 的 CSV 导入 mysql 进行计算有什么建议吗?使用 php 导入时是否可以更改 CSV 格式?
$file = "ftp:1.1.1.1/myfile.csv";
if(($handle = fopen($file, "r")) !== FALSE)
{ fgetcsv($handle);
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
$num = count($data);
for ($c=0; $c < $num; $c++) {
$col[$c] = $data[$c];
}
$col13a = $col[27];
$col13 = substr($col13a, 1);
$col13 = substr($col13a, 1);
$query = "INSERT IGNORE INTO allinv (cost) VALUES ('".$col13."')";
$s= mysqli_query($dbConnected, $query);
}
fclose($handle);
}////upload script
////calculation & display script:
$sum=0;
while($row = fetch_array($result)){
$date2= strtotime($row['DateIn']);
$day = ($date-$date2)/86400;
$value = $row['Cost'];
$sum += $value;
echo "<tr>";
echo "<td>".$row['VIN']."</td>";
echo "<td>".$row['Make']."</td>" ;
echo "<td>".$row['Model']."</td>";
echo "<td>".$row['Year']."</td>";
echo "<td>".$row['Color']."</td>";
echo "<td>".number_format($day)."</td>";
echo "<td>".$row['Location']."</select></td>";
echo "<td>".$row['Locationoutside']."</td>";
echo "<td>".'$'.$row['Cost']."</td>";
}"</table>";
echo "<table><tr>
<th>Total Vehicles</th>
<th>Sum of Cost</th></tr>";
$english_format_number = number_format($sum, 2, '.', ',');
$count= mysqli_num_rows($result);
echo "<td>".$count."</td>";
echo "<td> $ ".$english_format_number."</td>";
"</table>";
}
最佳答案
所以我想通了,不必使用任何其他程序。 而不是:
////calculation & display script:
$sum=0;
while($row = fetch_array($result)){
$date2= strtotime($row['DateIn']);
$day = ($date-$date2)/86400;
$value = $row['Cost'];
$sum += $value;
我改成了这样:
$sum = 0;
while($row = fetch_array($result)){
$date2= strtotime($row['DateIn']);
$day = ($date-$date2)/86400;
$value = $row['Cost'];
$calc = floatval(str_replace('', '', str_replace(',', '', $value)));
$sum += $calc;
由于它是 VARCHAR,它只添加了前两个数字,逗号停止了它并将它移动到下一行。删除了逗号,添加了 floatvar,现在效果很好。
关于php - 使用 currancy 格式的字段将 CSV 导入 MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39278591/