这种数字格式有啥问题? [关闭]

Posted

技术标签:

【中文标题】这种数字格式有啥问题? [关闭]【英文标题】:What's wrong with this number format? [closed]这种数字格式有什么问题? [关闭] 【发布时间】:2020-03-12 23:37:58 【问题描述】:

我想回显 mysql 列中的值,但我想得到千位中的逗号。因此,我收到的是 5000,而不是收到“5,000”。我使用的是 number_format,但它似乎有问题,因为浏览器控制台显示“0,00”而不是我通过 Jquery/Ajax 调用的值。一些想法?我将数字作为字符串插入。示例:("INSERT INTO Votes (votes) VALUES ('10000')"; 也许是有什么关系?

这是我从 MySQL 获取数据的 php 代码:

$co = $_REQUEST['color'];

$sql = "SELECT SUM(votes) AS sum FROM Votes WHERE color = '$co'";
$result = $conn->query($sql);

if ($result->num_rows > 0) 
$row = $result->fetch_assoc();
echo number_format($row["sum"], 2, ",", ".");

else 
echo "No result found";

【问题讨论】:

如果你只是回显$row["sum"],你会得到什么? Running echo number_format("5000", 2, ",", "."); 确实打印了预期的结果,所以我怀疑 $row["sum"] 有问题 Anis R. 只需 $row["sum"] 我得到了值,但没有逗号,我想要千位逗号。 了解 sql 注入以及准备和绑定查询的重要性 请注意,当某个答案在某种程度上被证明有帮助时,最好给它点赞,而不是将贡献者视为某种走狗 【参考方案1】:

只需执行number_format("5000"),您就会得到5,000

根据您的示例推断,它将是:

number_format($row['sum'])

例如,如果 $row['sum'] 是 5000,您将得到 5,000 作为输出。

【讨论】:

我正在使用 Ajax 传递一个变量,所以我不能输入 5000。我正在尝试从 MySQL 表中检索一个值。你明白吗? 我以为你可以推断出来,我想你是初学者,抱歉。刚刚编辑了答案。 JoelBonetR,我试过 number_format($row['sum']),但它在浏览器控制台中得到 0,00。 您在示例中使用的是 PHP,因此如果您在浏览器的控制台中获得 0.00,您可能会在另一端遇到一些错误。我在发布之前用不同的数字对其进行了测试,并且 php 函数按预期工作。也许你有一些 javascript 操作可以提供的数据? 同时检查w3schools.com/php/…【参考方案2】:

嗯,在 PHP 中你已经在做的是正确的方法,我不确定你为什么会得到错误的输出。

但是,您也可以尝试直接从 MySQL 格式化数字:

$sql = "SELECT FORMAT(SUM(votes), 2) AS sum FROM Votes WHERE color = '$co'";

通过这样做,$row["sum"] 应该直接格式化。

如果连这都不起作用,那么您很可能在客户端遇到了问题。

【讨论】:

好的,当我这样做时,我会在浏览器控制台中收到 NaN。同样,我将数字作为字符串插入 MySQL 表中。你认为这是问题所在吗? 好的,这很好。但是我怎样才能只显示没有小数点的逗号呢? @JoeSmith 只需将FORMAT(SUM(votes), 2) 中的 2 替换为 0(这是您想要的小数位数)。【参考方案3】:

使用 number_format($row["sum"],2,'.','');

【讨论】:

以上是关于这种数字格式有啥问题? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

这个控制器代码有啥作用? [关闭]

怎么在所有的数字前面添加0: 因为我忘记了小时,要变成这种格式的0:00:00,这个样子的

阿波罗和盖茨比有啥区别? [关闭]

SQL 和 SQL*Plus 有啥区别? [关闭]

数字加密算法[关闭]

从 C# 切换到 C++。有啥必读的吗? [关闭]