更新查询MySQL PDO时的情况

如何使用.NET在MySQL和PDO中运行更新查询CASE WHEN。以下查询将CASE列更新为0。


$query= "Update payments SET 

                            total = :total,

                            paid = CASE

                                      WHEN paid > :new THEN paid = :new

                                   ELSE paid

                                   END,

                            due = CASE

                                     WHEN paid < :new THEN due = :new - paid

                                  ELSE due

                                  END

                             WHERE id = :id ";


                        $update= $db->prepare($query);


                        $update->bindparam(':total',$new);

                        $update->bindparam(':new',$new);

                        $update->bindparam(':id',$id);

                        $update->execute();


互换的青春
浏览 149回答 1
1回答

ABOUTYOU

请勿尝试将值分配给CASE WHEN语句内的列,因为您已经在执行此操作。CASE WHEN将评估为满足条件的值。试试这个代码UPDATE payments SET&nbsp;&nbsp;total = :total,&nbsp;paid = (CASE WHEN paid > :new THEN :new ELSE paid END),&nbsp;due = (CASE WHEN paid < :new THEN (:new - paid) ELSE due END)&nbsp;WHERE id = :id&nbsp;我删除了case语句中对pay和due列的分配。
打开App,查看更多内容
随时随地看视频慕课网APP