我已经搜寻了,但是什么也没找到。我有一个CSV文件,正在通过php脚本插入mysql数据库。尝试了许多不同的东西,但无法使其正常工作。CSV字段以格式为currency的列发送给我们,尝试将其附加到带有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,则可以正常工作,但这必须是自动化的。
关于将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,现在效果很好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句