我有这段代码:
$mtp->query("SELECT * FROM `shop_small_pro_tbl` order by price ASC");
$records=$mtp->resultset();
foreach($records as $row) {
$a= $row['price'] ;
echo $a;
}
当我输出价格时,它看起来像这样:
1050000 1290000 1600000 1820000 1910000 2110000 2130000 2360000 2410000 680000 900000
答案 0 :(得分:0)
您的价格列正在“不自然地排序”有关详细信息,请参阅此link。
解决此问题的最佳/永久方法是在数据库中生成price
列:DECIMAL(10,2)
。这假设您实际上将价格值存储到2位小数;否则,如果值只是整数,则可以使用INT
。通过修改数据库表结构,您无需担心在查询时重新进行列类型。
如果您有特定于项目的原因导致无法更改表列的类型,那么您可以在ORDER BY
子句中CAST price列。
SELECT * FROM `shop_small_pro_tbl` ORDER BY CAST(price AS DECIMAL(10,2))