【问题标题】:PHP mySQL Query ignores decimal valuesPHP mySQL 查询忽略十进制值
【发布时间】:2015-04-26 06:36:56
【问题描述】:

我正在使用 AJAX 根据输入中包含的值从数据库中提取某些股票。其中一个值是平均回报,其中包含一个十进制值。

我有两个变量,$min_returns$max_returns,它们分别保存诸如 46.6 之类的值(通常保存 AJAX 返回)。

PHP 代码:

SELECT avgreturns 
FROM stocks 
WHERE avgreturns >= '$min_returns' AND avgreturns <= '$max_returns'

在数据库中,值可以是 0.3 到 4.6 等任何值。

我遇到的问题是小数可能不存在。例如,1.3 将被赋值为 13,这不会包含在我上面的示例中。整数,如 5,被正确读取并包含在上面。

我是 PHP 和 mySQL 的新手。我在数据库中做错了什么,我需要将列设置为正确的设置吗?我知道从查询中调用的所有内容都作为字符串返回,但是没有任何方法可以在查询中转换它,是吗?

如果可能的话,我希望避免对我的数据库中的值进行四舍五入。

【问题讨论】:

标签: php mysql sql select floating-point


【解决方案1】:

单引号表示字符串文字,因此您强制数据库按字典顺序比较值。为了以数字方式解释它们,只需去掉引号:

SELECT avgreturns 
FROM   stocks 
WHERE  avgreturns >= $min_returns AND avgreturns <= $max_returns

强制警告:
使用字符串操作来创建查询通常是一个坏主意,这会使您容易受到 SQL 注入攻击。您可能应该改用prepared statement

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 2012-12-08
    • 1970-01-01
    • 2019-08-21
    相关资源
    最近更新 更多