我是一个php初学者,并尝试为mysql db表中的特定列进行聚合,但此列中有逗号分隔值,因此结果不正确。 这是表格列的示例
列1
12,345.67
123,456.78
column2
12,345.67
123,456.78
第3栏
12,345.67
123,456.78
column4
12,345.67
123,456.78
请在下面找到我的代码,如果我能使用解决方案,我会建议如何使用它。
<?php
$query=mysql_query("select * from mytable")or die(mysql_error());
while($row=mysql_fetch_array($query)){
?>
<tr>
<td><?php echo $row['column1'] ?></td>
<td><?php echo $row['column2'] ?></td>
<td><?php echo $row['column3'] ?></td>
<td><?php echo $row['column4'] ?></td>
</tr>
<?php } ?>
</tbody>
</table>
<?php
$result = mysql_query("SELECT sum(column1 + column2 + column3 + column4) FROM mytable") or die(mysql_error());
while ($rows = mysql_fetch_array($result)) {
?>
<div>
Total: <?php echo $rows['sum(column1 + column2 + column3 + column4)']; ?></div>
<?php }
?>
<?php }
?>
答案 0 :(得分:1)
要使mysql正确运行聚合,您需要指定要求和的每个字段,而不是使用SELECT *。
例如
<?php
$query=mysql_query("select Order_Name, SUM(ORDER_VALUE), SUM(ORDER_COUNT) SUM(ORDER_TAX+ORDER_SHIPPING AS 'fees') from mytable...
如果聚合不起作用,因为基于CSV源数据中存在逗号,那么您可能需要将数据库字段设置为正确的类型,如果是正确的类型,则可能是FLOAT或DOUBLE你只想要2位小数。
答案 1 :(得分:0)
SQL不会以这种方式分配总和。
更改选择
SELECT sum(column1 + column2 + column3 + column4) FROM mytable
到
SELECT sum(column1 + column2 + column3 + column4) AS MYSUM FROM mytable
和echo $ row ['MYSUM'];
答案 2 :(得分:0)
这将使用逗号添加一些值:
set @num1 = '222,3039';
set @num2 = '23,444990';
select REPLACE(@num1,',','')+ REPLACE(@num2,',','')
答案 3 :(得分:0)
首先,我强烈建议您在数据库中使用正确的数据类型,但正如您所说,这是不可能的,最简单的方法是将字符串解析为现有循环中的double值,并保持总计。
$query=mysql_query("select * from mytable")or die(mysql_error());
while($row=mysql_fetch_array($query)){
... existing code ...
# remove the comma, and cast the string to a double
$col1 = (double) str_replace(",", "", $row->column1);
... $col2, $col3 ...
$col4 = (double) str_replace(",", "", $row->column4);
$rowVal = $col1 + $col2 + $col3 + $col4;
# keep a running total
$totalVal += $rowVal;
}
然后在以后需要时
# format the total again as you see fit
echo $totalVal; // straight double
echo number_format($totalVal, 2, '.', ','); // thousand separator and decimal point
<强>推荐强>
清理数据库结构,以便使用格式正确的mysql。此外,不推荐使用这些函数(mysql_query)等。查看PDO,准备好的陈述。
http://php.net/manual/en/book.pdo.php - 配置/参考的好方法 https://phpdelusions.net/pdo - 自我宣传为唯一正确的指南,所以值得一看