Php 难以从MySQL以升序显示数据

Php 难以从MySQL以升序显示数据,php,mysql,Php,Mysql,我使用的是按铅价订购,如下所示- $query = "SELECT * FROM properties WHERE Type='For Sale' AND Live = 'yes' ORDER BY Lead_Price"; 然后在while循环中使用数据。铅价数据为每周950英镑、每周1050英镑、每周900英镑和每周400英镑 当我在页面上显示价格时,首先显示的是1050英镑的价格,其余3个按升序排列。关于为什么1050英镑不在底部的任何想法,我想以升序显示出来。下面是其他代码。谢谢 wh

我使用的是按铅价订购,如下所示-

$query = "SELECT * FROM properties WHERE Type='For Sale' AND Live = 'yes' ORDER BY Lead_Price";
然后在while循环中使用数据。铅价数据为每周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>"; 

}
while($row=mysql\u fetch\u array($result)){
$propertylink=str_replace(“”,“-”,$row['Property_Name']);
回声“;
回显“$row['Property_Name']”;
echo“Sleeps:.$row['Sleeps']。”;
回声“卧室:.$row[“卧室”]。”;
回声“浴室:”.$row[“浴室]”;
echo“”$row['Property\u Short\u Description']。“

”; 回音“$行[“铅价]”; 回声“; }
请使用CAST()

请使用CAST()

请使用CAST()


请使用CAST()函数使varchar price通过下单。出现此问题的原因可能是,您将lead\u价格存储为字符串,而不是整数或浮点数(最好是整数选项)。它是作为一个字符串进行比较的,所以是逐字符比较的

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


或者,不是很好的解决方案,
orderbycast(Lead\u Price为DECIMAL(10,2));
,但它的性能不好。

出现此问题的原因可能是,您将Lead\u Price存储为字符串,而不是整数或浮点数(最好是整数选项)。并且它是作为字符串进行比较的,所以按字符进行比较

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


或者,不是很好的解决方案,
orderbycast(Lead\u Price为DECIMAL(10,2));
,但它的性能不好。

出现此问题的原因可能是,您将Lead\u Price存储为字符串,而不是整数或浮点数(最好是整数选项)。并且它是作为字符串进行比较的,所以按字符进行比较

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


或者,不是很好的解决方案,
orderbycast(Lead\u Price为DECIMAL(10,2));
,但它的性能不好。

出现此问题的原因可能是,您将Lead\u Price存储为字符串,而不是整数或浮点数(最好是整数选项)。并且它是作为字符串进行比较的,所以按字符进行比较

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


或者,不是很好的解决方案,
按铸件订购(铅价为十进制(10,2))
,但它的性能不好。

将数字存储为文本?Lead_Price应该是数字如果您想要数字订单1,2,3..n,Lead_Price必须是数字。如果您对文本应用订单,它将类似于1,11111,2,21,22将数字存储为文本?Lead_Price应该是数字如果您想要数字订单1,2,3..n.如果y您在文本上应用订单将类似于1,11111,2,21,22将数字存储为文本?Lead_Price应为数字如果您要数字订单1,2,3..n.如果您在文本上应用订单,则它将类似于1,11111,2,21,22将数字存储为文本?Lead_Price应为数字如果您要数字订单1,2,3..n.如果在文本上应用订单,它将类似于1,11111,2,21,22。否。在数字数据类型下存储价格。否。在数字数据类型下存储价格。否。在数字数据类型下存储价格。
$query = "SELECT * FROM properties WHERE Type='For Sale' 
AND Live = 'yes' ORDER BY CAST(Lead_Price AS DECIMAL(10,2))";