PHP mySQL 查询忽略十进制值

PHP mySQL Query ignores decimal values

我正在使用 AJAX 根据输入中包含的值从数据库中提取某些股票。这些值之一是平均值 returns,它包含一个小数值。

我有两个变量,$min_returns$max_returns 分别保存 46.6 等值(通常保存 AJAX return).

PHP代码:

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

在数据库中,值将从 0.3 到 4.6 等。

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

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

希望尽可能避免对数据库中的值进行四舍五入。

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

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

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