我进行了搜索和搜索,但几乎找不到任何东西。我有一个CSV文件,我通过php脚本插入到mysql数据库中。试过很多不同的东西却无法让它正常工作。 CSV字段通过格式为currancy的列发送给我们,尝试将其附加到带有VARCHAR,INT,Decimal(10,2),Float的mysql表中,几乎就在列表中。在使用php substr($ val,1)删除' $'之后加载到表中并在VARCHAR中正确显示,但是使用number_format计算它($ sum,2,&# 39;''&#39);出现完全错误,比如$ 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>";
}
答案 0 :(得分:0)
所以我想通了,没有必要使用任何其他程序。 而不是:
////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,现在效果很好。