Как обновить все строки со столбцом = до значения, кроме 1, а затем обновить это значение до другого? - PullRequest
0 голосов
/ 20 марта 2020

У меня есть таблица MySQL ПРЕДЛОЖЕНИЙ с OID, PID и STATUS. СТАТУС имеет 3 значения ENUM. ОА C. (Открыто, Принято, Закрыто). Выглядит это так:

+---------+-------------+--------+
|   oid   |    pid      | status |
+---------+-------------+--------+
|    1    |     1       |    o   |
|    2    |     1       |    o   |
|    3    |     1       |    o   |
|    4    |     2       |    o   |
+---------+-------------+--------+

Все предложения открыты. Когда пользователь хочет принять предложение, он нажимает кнопку, которая отправляет идентификатор сообщения (PID) и идентификатор предложения (OID) в файл php, который выполняет инструкцию UPDATE для базы данных. Я хочу, чтобы оператор обновлял таблицу так:

+---------+-------------+--------+
|   oid   |    pid      | status |
+---------+-------------+--------+
|    1    |     1       |    a   |
|    2    |     1       |    c   |
|    3    |     1       |    c   |
|    4    |     2       |    o   |
+---------+-------------+--------+

Psudo- PHP -MySQLI-оператор:

UPDATE offers 
SET status='c' 
WHERE pid = $_POST['pid'], except WHERE oid = $_POST['oid']

, но также SET status = 'a' WHERE oid = $ _POST ['oid']
Я новичок в PHP и MySQLi, поэтому я не знаю, как структурировать все операторы. Возможно ли такое утверждение? Я знаю, как использовать подготовленные утверждения, но я просто добавляю значения здесь просто для простоты. Спасибо!

1 Ответ

0 голосов
/ 20 марта 2020

Используйте CASE, чтобы указать различные значения для назначения в зависимости от условия.

UPDATE offers
SET status = 
    CASE oid
        WHEN $_POST['oid'] THEN 'a'
        ELSE 'c'
    END
WHERE pid = $_POST['pid']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...