случай, когда в запросе на обновление MySQL PDO - PullRequest
3 голосов
/ 14 апреля 2019

Как запустить запрос на обновление в 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();

1 Ответ

2 голосов
/ 14 апреля 2019

не пытайтесь присвоить значение вашему столбцу внутри операторов CASE WHEN, поскольку вы уже это делаете.
СЛУЧАЙ КОГДА оценивается в значение, которое удовлетворяет условию.
попробуйте этот код

UPDATE payments SET 
 total = :total,
 paid = (CASE WHEN paid > :new THEN :new ELSE paid END),
 due = (CASE WHEN paid < :new THEN (:new - paid) ELSE due END)
 WHERE id = :id 

Я удалил назначения для платных и подлежащих оплате столбцов внутри описания дела.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...