在尝试更新mysql中的列行时,它抱怨
违反完整性约束:1048列“ total_amount”不能为 空
同时
总金额
脚本中的拼写与
相关总金额
在数据库表中。
这是更新代码
public function updateOrder(){
$updateOrders = 'UPDATE `orders` SET total_amount = (SELECT SUM(unit_cost * quantity) FROM `order_detail` WHERE ';
$updateOrders .= 'id = ' . $this->key . ') WHERE id = ' . $this->key;
$this->query($updateOrders);
$this->cartEmpty();
return $this->key;
}
这是清除用户输入的代码
private function query($sql, $parameters = []) {
$query = $this->pdo->prepare($sql);
$query->execute($parameters);
return $query;
}
答案 0 :(得分:2)
您可以在子查询中使用Car
,因为它总是返回一行:
COALESCE()
您还应该学习使用参数。
答案 1 :(得分:0)
尝试查看您的表定义。字段total_amount
可能未标记为NULL,因此MySQL要求提供该值
或尝试
public function updateOrder(){
$updateOrders = 'UPDATE
订单SET total_amount = IFNULL((SELECT SUM(unit_cost * quantity),0) FROM
order_detail WHERE ';
$updateOrders .= 'id = ' . $this->key . ') WHERE id = ' . $this->key;
$this->query($updateOrders);
$this->cartEmpty();
return $this->key;
}