【问题标题】:requesting double value always shows 0.00请求双精度值始终显示 0.00
【发布时间】:2014-06-30 16:56:26
【问题描述】:

我尝试从 MySQL 列中显示一个“双”值,我正在使用 number_format() 对其进行转换,但我得到的整个时间都是 0.00 作为答案。 我的代码;

PHP:

<?php

$user = $_SESSION['username'];
$a = $_GET['a'];

// ...

if ($a == "balance") {
    $querys= "SELECT balance FROM users WHERE Username='$user'";
    $results=  mysql_query($querys);
    $rows = mysql_fetch_row($results);
    $bfloat = number_format($rows['balance'], 2);
    echo $bfloat;
}

?>

转换有效,唯一的问题是答案是 0.00,而不是用户的余额。例子; 1.37

【问题讨论】:

  • 完成了基本的调试,比如var_dump($rows['balance']),在开始格式化之前看看里面有什么?而且你很容易受到SQL injection attacks
  • 旁注:您可能想要关闭那个 SQL 注入漏洞(用户名中带有 'How can I prevent SQL-injection in PHP?
  • @MarcB 我不容易受到 SQL 注入的攻击,因为在注册/登录时所有空格都会转换为 _ 下划线。

标签: php mysql double number-formatting


【解决方案1】:

你应该使用:

$bfloat = number_format($rows[0], 2);

而不是

$bfloat = number_format($rows['balance'], 2);

因为你使用mysql_fetch_row 函数。如果你想使用$rows['balance'],你应该使用mysql_fetch_assoc函数来获取数据,而不是mysql_fetch_row

当然,你不应该再使用 mysql 函数了(有些已弃用),而且你的代码容易受到 SQL 注入攻击。

【讨论】:

  • 非常感谢您的解释,现在我理解了逻辑,因为我只请求一列,并且可能从 0 开始计数,它是余额列。 :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 2012-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多