查找最接近值的数字不起作用(SQL)
Posted
技术标签:
【中文标题】查找最接近值的数字不起作用(SQL)【英文标题】:Find the closest number to value not working (SQL) 【发布时间】:2020-05-05 16:06:38 【问题描述】:我有以下 SQL 命令:
$sql = "SELECT TOP 1
FROM products
ORDER BY ABS( price - '$price' ) ASC LIMIT 1";
$result = $conn->query($sql);
while($row = $result->fetch_array())
echo "\r\n";
echo $row['price'];
echo "\r\n";
我想要做的是在“价格”列中找到与局部变量 $price 最接近的数字。例如,当用户输入价格为 15000 时,我想在产品表的“价格”列中找到最接近的数字。不幸的是,这给了我这个问题:
php Fatal error: Uncaught Error: Call to a member function fetch_array() on bool in C:\Users\rojto\Documents\clones\Techalo\techalo-improvements\database.php:25
Stack trace:
#0 main
有人可以帮帮我吗?
【问题讨论】:
TOP 在 mysql 中不是一个东西,所以你没有多大意义 【参考方案1】:您应该在SELECT
子句中使用列名,而不是TOP 1
。
大概,你想要:
SELECT price
FROM products
ORDER BY ABS(price - :price)
LIMIT 1;
请注意,这使用查询参数来传递目标价格值,而不是将其连接到查询字符串中。您可以查看this famous SO post 了解为什么以及如何避免 SQL 注入。
【讨论】:
ORDER BY ABS(price - :price)
" : " 字符应该是 $?
@TomášRoj:请查看我在回答中链接的帖子。以上是关于查找最接近值的数字不起作用(SQL)的主要内容,如果未能解决你的问题,请参考以下文章