【问题标题】:Retrieve decimal data from mysql and put into an array从mysql中检索十进制数据并放入数组
【发布时间】:2012-04-11 15:28:39
【问题描述】:

我有一个mysql表,只有一个寄存器,其中price字段为decimal(6,2)类型,值为60.35

考虑上面的代码:

$prices = mysql_query("SELECT id, price FROM products");
while ($pr = mysql_fetch_assoc($prices)) {
    $prics[$pr['id']]=$pr['price'];
    echo $pr['price'].' - '.$prics[$pr['id']]."\n";
}

输出不正确:

60.35 - 6

正确的是:

60.35 - 60.35

我尝试了没有mysql查询的相同情况:

$var = array(60.35,'60.35',60);
$var2[0] = $var[0];
$var2[1] = $var[1];
print_r($var2);

它按预期工作:

Array
(
    [0] => 60.35
    [1] => 60.35
)

我该如何解决这个问题?

【问题讨论】:

    标签: php mysql number-formatting


    【解决方案1】:

    我认为问题在于 PHP 将第二个浮点数转换为字符串,因为它在将第一个浮点数视为浮点数时连接到字符串

    编辑 - 不,这是完美的,它必须是别的东西

    http://codepad.org/UbeJ20Wh

    【讨论】:

    • 问题出在mysql查询中
    【解决方案2】:

    问题线很可能

    $prics[$pr['id']]=$pr['price'];
    

    尝试强制类型如下:

    settype($prics[$pr['id']], "float");
    $prics[$pr['id']]=$pr['price'];
    echo $pr['price'].' - '.$prics[$pr['id']]."\n";
    

    【讨论】:

    • 返回另一个错误:只能通过引用传递变量
    • 尝试添加一个新变量$p,设置$p = $pr['price'],然后设置$prics[$pr['id']] = $p
    【解决方案3】:

    我通过在使用前初始化数组 var 解决了这个问题:

    $prics = array();
    

    【讨论】:

      猜你喜欢
      • 2015-05-21
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多