我正在尝试更新整个数据,但是我需要将汇率除以购买价格上的保证金率,然后出现数据格式错误。
SQLSTATE [22007]:无效的日期时间格式:1366不正确的十进制值:第1行的“产品”列的“ buy_amt * 0.00097812555575316” (SQL:更新产品设置值= 10,价格= buy_amt * 0.00097812555575316)
我的代码:
VpnEntry.Options.RequireEncryptedPassword = false;
VpnEntry.Options.RequirePap = true;
VpnEntry.Options.RequireChap = false;
VpnEntry.Options.RequireMSChap = false;
VpnEntry.Options.RequireMSChap2 = false;
产品表
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
答案 0 :(得分:1)
这段代码
"buy_amt * ".(1+($datas["value"]/100))/$datas["price"]
将生成一个字符串,该字符串将不适合数据库中的价格字段,即数字
你的意思是
$buy_amt * (1+($datas["value"]/100))/$datas["price"]
?
答案 1 :(得分:0)
我解决了这个问题...
DB::table("prod")
->update([
"value" => $datas["value"],
"price" => DB::raw("buy_amt * ".(1+($datas["value"]/100))/$datas["price"]),
]),
需要使用DB :: raw来进行查询计算。