PDC通过DESC与PHP订购

时间:2015-04-16 14:01:00

标签: php mysql pdo

我有一个很好的数据库与用户,他们都有钱。 看看这个例子:

Jan - 200€ 
Piet - €199.1983091389013 
Karel - €300 

当我做一个像这样的简单脚本时:

$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

$stmt = $conn->prepare('SELECT * FROM `gebruikers` ORDER BY geld DESC LIMIT 10'); 
$stmt->execute();

$result = $stmt->fetchall();
foreach ($result as $gebruiker) {
    $gebruikergeld = round($gebruiker['geld'], 2);
    echo "<li>".$gebruiker['naam']." - &euro; ".$gebruikergeld."</li>";
}

现在我得到了回复:

Piet - €199.2
Karel - €300
Jan - €200

如你所见,它有点奇怪,他不计算点。 因此,他将€199.2视为€1992

有人之前得到过这个或知道如何解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

您需要将数据转换为int以进行排序

SELECT * FROM `gebruikers` 
ORDER BY geld+0 DESC LIMIT 10

如果存储了符号,您可以按

进行操作
SELECT * FROM `gebruikers` 
 ORDER BY replace(geld,'€','')+0 DESC LIMIT 10

但更好的想法是将金额存储为整数数据类型,并使用额外的货币符号列