新增记录时SQL decimal字段存null:如何存储小数格式输入?
问题描述
新增数据库记录时,paid字段始终存储为null值,其他字段均可正常工作。
相关代码
SQL字段定义
`paid` decimal(10,2) DEFAULT NULL
PHP接收代码
'paid' => $request->input('paidammount')
HTML输入框
<input type="number" name="paidammount" pattern="[0-9]+([\.,][0-9]+)?" step="0.01">
修复方案
- 确认请求参数是否正常传递:在PHP代码中添加
var_dump($request->input('paidammount'));调试语句,查看该参数是否存在或为空;同时打开浏览器开发者工具的Network面板,检查表单提交的Form Data,确认paidammount是否正确携带了用户输入的值。 - 统一小数点格式:HTML输入框允许用户输入
.或,作为小数点,但MySQL的decimal类型仅识别.作为分隔符,需在PHP中转换后再存储:'paid' => str_replace(',', '.', $request->input('paidammount')) - 匹配数据类型:将字符串类型的输入值转换为浮点型,确保和数据库
decimal字段类型兼容:'paid' => (float)str_replace(',', '.', $request->input('paidammount')) - 排查前端提交异常:检查输入框是否被设置为
disabled或readonly属性,同时确认没有JavaScript代码在表单提交时清空该字段的值。
内容的提问来源于stack exchange,提问作者Niski93
相关产品推荐
相关产品推荐

