首页 > 解决方案 > laravel SQLSTATE [22007]:无效的日期时间格式:1366 不正确的十进制值:'buy_amt * 0.00097812555575316' 列 'price' 在第 1 行错误

问题描述

我正在尝试更新整个数据,但是我需要将汇率除以购买价格的保证金率,并且出现数据格式错误。

SQLSTATE [22007]:无效的日期时间格式:1366 不正确的十进制值:'buy_amt * 0.00097812555575316' 列 'prod' 在第 1 行(SQL:更新 prod 设置值 = 10,价格 = buy_amt * 0.00097812555575316)

我的代码:

DB::update("update prod set value = ?, price = ?,  ",
            [
                $datas["value"],
                "buy_amt * ".(1+($datas["value"]/100))/$datas["price"],
            ]);

产品表

price value datatype DECIMAL buy_amt datatype INT

price | value | buy_amt
11    | 10    | 10
22    | 10    | 20

标签: phplaravel

解决方案


这段代码

"buy_amt * ".(1+($datas["value"]/100))/$datas["price"]

将产生一个字符串,它不适合数据库中的价格字段,它是一个数字

你的意思是这个

$buy_amt * (1+($datas["value"]/100))/$datas["price"] 

?


推荐阅读