我正在使用 AJAX 根据输入中包含的值从数据库中提取某些股票。这些值之一是平均返回,它包含一个小数值。
我有两个变量,$min_returns
和 $max_returns
,分别保存 4
和 6.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 的新手。我在数据库中做错了什么,需要将列设置为正确的设置吗?我知道从查询中调用的所有内容都作为字符串返回,但是没有任何方法可以在查询中转换它,是吗?
如果可能的话,我想避免四舍五入我的数据库中的值。
最佳答案
单引号表示字符串文字,因此您强制数据库按字典顺序比较值。为了用数字解释它们,只需去掉引号:
SELECT avgreturns
FROM stocks
WHERE avgreturns >= $min_returns AND avgreturns <= $max_returns
强制警告:
使用字符串操作来创建查询通常不是一个好主意,这会使您容易受到 SQL 注入(inject)攻击。您可能应该使用 prepared statement相反。
关于PHP mySQL 查询忽略十进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29874577/