PHP mySQL查询忽略小数值

时间:2015-04-26 06:36:56

标签: php mysql sql select floating-point

我正在使用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的新手。我在数据库中做错了什么,我需要将列设置为正确的设置?我知道从查询中调用的所有内容都以字符串形式返回,但是在查询中没有任何方法可以转换它,是吗?

如果可能的话,我想避免舍入数据库中的值。

1 个答案:

答案 0 :(得分:2)

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

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

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