无法更新MySQL中的列

时间:2019-01-08 14:53:42

标签: php mysql sql

在尝试更新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;
    }

2 个答案:

答案 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; }