Php 如何将column=to的所有行更新为除1以外的值,然后将该行更新为另一个值?
我有一个MySQL提供表,其中包含OID、PID和状态。状态有3个枚举值。O A C.(打开、接受、关闭)。看起来是这样的: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 |
+---------+-------------+--------+
| 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']
是的,它更新得不够快。我删除了评论。再次感谢你,伙计@达曼读了最后一句话:“我知道使用事先准备好的陈述”