无法更新mysql中的列

btqmn9zl  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(309)

在尝试更新mysql中的列行时,它抱怨
完整性约束冲突:1048列“总金额”不能为空
同时
总金额
脚本中的拼写与
总金额
在数据库表中。
这是更新代码

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;
    }
t30tvxxf

t30tvxxf1#

尝试查看表定义。田野 total_amount 可能没有标记为null,因此mysql需要提供该值,或者尝试这样做 public function updateOrder(){ $updateOrders = 'UPDATE 订单 SET total_amount = IFNULL((SELECT SUM(unit_cost * quantity),0) FROM 订单详情 WHERE '; $updateOrders .= 'id = ' . $this->key . ') WHERE id = ' . $this->key; $this->query($updateOrders); $this->cartEmpty(); return $this->key; }

bfrts1fy

bfrts1fy2#

你可以用 COALESCE() 在子查询中,因为它总是返回一行:

UPDATE `orders`
    SET total_amount = (SELECT COALESCE(SUM(unit_cost * quantity), 0)
                        FROM . . .

您还应该学会使用参数。

相关问题