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

最佳答案

单引号表示字符串文字,因此强制数据库将字典值进行比较。为了从数字上解释它们,只需去掉引号:

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

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

08-16 07:57