我正在使用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的新手。我在数据库中做错了什么,我需要将列设置为正确的设置?我知道从查询中调用的所有内容都以字符串形式返回,但是在查询中没有任何方法可以转换它,是吗?
如果可能的话,我想避免舍入数据库中的值。
答案 0 :(得分:2)
单引号表示字符串文字,因此您强制数据库按字典顺序比较值。为了用数字解释它们,只需删除引号:
SELECT avgreturns
FROM stocks
WHERE avgreturns >= $min_returns AND avgreturns <= $max_returns
强制警告:
使用字符串操作来创建查询通常是一个坏主意,这使您容易受到SQL注入攻击。您应该使用prepared statement代替。