我有一个名为 的表payment
,它由列 - bill ID
, group ID
, u1
, u1paid
, u2
, u2paid
, u3
, u3paid
, u4
, u4paid
, u5
,组成u5paid
。如果我当前设置的 userID 等于存储在我选择的行中的列 u1、u2...等之一中的 ID,我想要做的是存储付费列之一的值。
例如,如果当前用户 ID等于存储在 中的 ID u3
,我想将 的值存储u3paid
在 PHP 变量中。实现此目的的 SQL 命令是什么?
尝试解决方案:
SELECT u1paid if u1 = SessionID or u2paid if u2 = SessionID or
u3paid if u3 = SessionID or u4paid if u4 = SessionID or
u5paid if u5 = SessionID FROM payment WHERE billID = BILLID;
我知道这不是正确的语法,但它是我能得到的最接近类似 SQL 的东西。
第二次编辑(基于twoleggedhorse的回答):
$payment = "SELECT CASE WHEN u1 = '".$_SESSION['ID']."' THEN u1paid WHEN u2 =
'".$_SESSION['ID']."' THEN u2paid WHEN u3 = '".$_SESSION['ID']."' THEN u3paid
WHEN u4 = '".$_SESSION['ID']."' THEN u4paid
WHEN u5 = '".$_SESSION['ID']."' THEN u5paid END AS PAID
FROM payment WHERE trackbill = '".$row['BID']."';"
之后,我尝试通过 $payment['PAID'] 访问此语句中的值,但它仍然无法正常工作。我还在搞砸这件事吗?
Edit3:上面的命令有效,我只是弄乱了一个变量名:P