Php 如何将column=to的所有行更新为除1以外的值,然后将该行更新为另一个值?

Php 如何将column=to的所有行更新为除1以外的值,然后将该行更新为另一个值?,php,mysql,mysqli,Php,Mysql,Mysqli,我有一个MySQL提供表,其中包含OID、PID和状态。状态有3个枚举值。O A C.(打开、接受、关闭)。看起来是这样的: +---------+-------------+--------+ | oid | pid | status | +---------+-------------+--------+ | 1 | 1 | o | | 2 | 1 | o | | 3 |

我有一个MySQL提供表,其中包含OID、PID和状态。状态有3个枚举值。O A C.(打开、接受、关闭)。看起来是这样的:

+---------+-------------+--------+
|   oid   |    pid      | status |
+---------+-------------+--------+
|    1    |     1       |    o   |
|    2    |     1       |    o   |
|    3    |     1       |    o   |
|    4    |     2       |    o   |
+---------+-------------+--------+
+---------+-------------+--------+
|   oid   |    pid      | status |
+---------+-------------+--------+
|    1    |     1       |    a   |
|    2    |     1       |    c   |
|    3    |     1       |    c   |
|    4    |     2       |    o   |
+---------+-------------+--------+
所有报价均有效。 当用户想要接受报价时,他们单击一个按钮,该按钮将post ID(PID)和报价ID(OID)发送到php文件,php文件将UPDATE语句发送到数据库。我希望语句将表更新为如下所示:

+---------+-------------+--------+
|   oid   |    pid      | status |
+---------+-------------+--------+
|    1    |     1       |    o   |
|    2    |     1       |    o   |
|    3    |     1       |    o   |
|    4    |     2       |    o   |
+---------+-------------+--------+
+---------+-------------+--------+
|   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']
但也要设置status='a',其中oid=$\u POST['oid']

我对PHP和MySQLi不熟悉,所以我不知道如何构造所有语句。这种说法可能吗?我知道使用预先准备好的语句,但我只是为了简单起见在这里添加值。谢谢

使用
CASE
根据条件指定要分配的不同值

UPDATE offers
SET status = 
    CASE oid
        WHEN $_POST['oid'] THEN 'a'
        ELSE 'c'
    END
WHERE pid = $_POST['pid']

是的,它更新得不够快。我删除了评论。再次感谢你,伙计@达曼读了最后一句话:“我知道使用事先准备好的陈述”