将十进制数存储到 MySQL 数据库中
Posted
技术标签:
【中文标题】将十进制数存储到 MySQL 数据库中【英文标题】:Store decimal number into MySQL database 【发布时间】:2018-11-20 22:00:27 【问题描述】:这是 AJAX 的返回,它显示了我试图将什么值存储到数据库中:
这是真正存储到数据库中的内容(我存储的是 58.00):
这是表的结构:
这里是 php:
$req = $bdd->prepare("INSERT INTO salon_histo(reference, designation, colour, size, type, price, qty, payment, date) VALUES(:reference, :designation, :colour, :size, :type, :price, :qty, :payment, NOW())");
$req->execute(array(
'reference' => $_POST['reference'],
'designation' => $_POST['designation'],
'colour' => $_POST['colour'],
'size' => $_POST['size'],
'type' => $_POST['type'],
'price' => floatval($price[0]),
'qty' => $_POST['soldQty'],
'payment' => $_POST['payment']
));
$req->closeCursor();
echo json_encode($price[0]);
当我尝试存储 58,33 时,mysql 如何在 0 处存储 2 位小数的数据?我尝试在 PHP 中使用 floatval,确实数字变为 58。
【问题讨论】:
请不要使用屏幕截图。复制粘贴文本数据和标记作为代码或引用。 How to store decimal in MySQL?的可能重复 对于 MySQL,数字通常格式化为XX.XX
,而不是 XX,XX
。将数字从逗号转换为句点,然后再将其插入 MySQL。
我猜你的价格是欧盟格式 x,xx
而不是 PHP/MySQL/任何十进制格式 x.xx
所以当你 floatval()
它时,它会在(包括)之后删除所有内容逗号;您可能想查看NumberFormatter 类或number_format()
您的问题是“逗号”。 Mysql 使用 '句号' 作为小数分隔符。
【参考方案1】:
价格似乎是一个数组:
'price' => floatval($price[0]),
可能小数部分有key 1?
'price' => (float) ($price[0] . '.' . $price[1]),
如果这不起作用,请var_dump($price)
并将结果粘贴给我。
要检查的另一件事是 PHP 是否使用逗号格式化这些数字。
【讨论】:
问题确实是昏迷。我使用 str_replace 将 "," 替换为 "."。数据被正确存储。谢谢你的帮助。截图,因为我无法显示数据是如何存储到 db 中的。 没问题,你能把这个标记为正确答案吗?以上是关于将十进制数存储到 MySQL 数据库中的主要内容,如果未能解决你的问题,请参考以下文章