我有一个很好的数据库与用户,他们都有钱。 看看这个例子:
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']." - € ".$gebruikergeld."</li>";
}
现在我得到了回复:
Piet - €199.2
Karel - €300
Jan - €200
如你所见,它有点奇怪,他不计算点。
因此,他将€199.2
视为€1992
。
有人之前得到过这个或知道如何解决这个问题吗?
谢谢!
答案 0 :(得分:2)
您需要将数据转换为int以进行排序
SELECT * FROM `gebruikers`
ORDER BY geld+0 DESC LIMIT 10
如果存储了符号,您可以按
进行操作SELECT * FROM `gebruikers`
ORDER BY replace(geld,'€','')+0 DESC LIMIT 10
但更好的想法是将金额存储为整数数据类型,并使用额外的货币符号列