难以从MySQL中按升序显示数据

时间:2014-01-13 10:34:19

标签: php mysql

我正在使用ORDER BY Lead_Price,如下所示 -

$query = "SELECT * FROM properties WHERE Type='For Sale' AND Live = 'yes' ORDER BY Lead_Price";

然后我在while循环中使用数据。 Lead_Price数据类似于每周950英镑,每周1050英镑,每周900英镑,每周400英镑。

当我在页面上显示价格时,首先显示1050英镑的价格,其他3个按升序排列。任何关于为什么1050英镑不在底部的想法,因为我想以递增的价格顺序显示它们。以下是其他代码。感谢。

while($row = mysql_fetch_array($result)){

$propertylink = str_replace(' ', '-', $row['Property_Name']);

echo "<div class=villas-i><a href=villas/".$propertylink.">";

echo "<img src=images/villas/".$propertylink."/Image-1.jpg width=240 height=155 border=0></a>"; 

echo "<div class=villa-name><h3>".$row['Property_Name']."</h3></div>";
echo "<div><h4>&nbsp;&nbsp;&nbsp;&nbsp;Sleeps: ".$row['Sleeps']."</h4></div>";
echo "<div><h4>Bedrooms: ".$row['Bedrooms']."</h4></div>";
echo "<div><h4>Bathrooms: ".$row['Bathrooms']."</h4></div>"; 
echo "<p>".$row['Property_Short_Description']."</p>"; 
echo "<div class=from>".$row['Lead_Price']."</div>"; 
echo "<div><a href=villas/".$propertylink."><img src=images/more-info.gif border=0></a></div></div>"; 

}

2 个答案:

答案 0 :(得分:3)

出现此问题的原因可能是,您不能将lead_price存储为整数或浮点数(更好的是整数选项),而是存储为字符串。它被比作一个字符串 - 所以char by char。

最佳解决方案 - 将列类型更改为整数并存储价格* 100(当您获得1050,50英镑时,您应将105050存储在数据库中(所有使用浮点数的编程语言存在巨大问题) (四舍五入的价格),以及新栏目中的货币。

或者,不是那么好的解决方案ORDER BY CAST(Lead_Price AS DECIMAL(10,2));,但它表现不佳。

答案 1 :(得分:0)

$query = "SELECT * FROM properties WHERE Type='For Sale' 
AND Live = 'yes' ORDER BY CAST(Lead_Price AS DECIMAL(10,2))";

请使用 CAST()功能让varchar价格按顺序排序