从mysql中检索十进制数据并放入数组

Posted

技术标签:

【中文标题】从mysql中检索十进制数据并放入数组【英文标题】:Retrieve decimal data from mysql and put into an array 【发布时间】: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
)

我该如何解决这个问题?

【问题讨论】:

【参考方案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();

【讨论】:

以上是关于从mysql中检索十进制数据并放入数组的主要内容,如果未能解决你的问题,请参考以下文章

从 mysql 数据库中检索图像时引发异常

MySQL 检索数据类型 == X 的列名

php文件以二进制形式上传并放入到数据库中

如何从linux二进制文件中存储和检索数据

3. 从键盘上输入一个八进制数,利用指针将其转换为十进制数并输出 C语言 很急

从char数组中提取十六进制数[关闭]