0

我有根据您的价格范围搜索汽车的代码:

$category = "SELECT * FROM tbl_listings WHERE price between '$c[0]' AND '$c[1]'"; 

出于某种原因,该代码不能完美运行。它向我展示了几辆在正确范围内的汽车,但当我在 5,000 到 20,000 之间搜索时,它也显示了一辆 200,000 的汽车。

此外,当数据库中有些汽车的价格带有美元符号而有些汽车带有逗号时,有什么好的搜索方法?搜索表单不返回任何带有美元符号或逗号的内容。

4

2 回答 2

1

停止将价格存储为字符串?价格通常存储为以下两种类型之一:

  • 整数:美分数
  • float:美元和美分,但一定要将小数位数设置为 2

通常不会将价格作为字符串(如“$14,999.99”)存储在数据库中,因为您无法进行范围查询,就像您现在尝试做的那样。

您也不能进行算术运算,例如对特定汽车子集的价格进行总计的查询。

如果您要提取的数据具有这样的格式化字符串,请使用 NumberFormatter::parseCurrency() 从您提供的字符串中获取浮点数,然后再将其推入数据库。 http://php.net/manual/en/numberformatter.parsecurrency.php

于 2012-05-13T21:55:13.260 回答
0

你关于

有些汽车的价格在数据库中带有美元符号,有些则带有逗号

让我觉得数据库中的数据类型不是数字数据类型。这可能是一个问题,即使您$c[0]是正确的下限并且$c[1]是上限。

于 2012-05-13T21:56:03.687 回答