PHP mySQL 查询忽略十进制值
PHP mySQL Query ignores decimal values
我正在使用 AJAX 根据输入中包含的值从数据库中提取某些股票。这些值之一是平均值 returns,它包含一个小数值。
我有两个变量,$min_returns
和 $max_returns
分别保存 4
和 6.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。
我正在使用 AJAX 根据输入中包含的值从数据库中提取某些股票。这些值之一是平均值 returns,它包含一个小数值。
我有两个变量,$min_returns
和 $max_returns
分别保存 4
和 6.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。