如果 column1 是用户,则插入那里,否则插入第 2 列

If column1 is user then insert there otherwise insert in column 2

我想这样做,如果 $_SESSION["user"] 存在于 App.Person1 中,则将其设置为空,否则将 App.Person2 设置为空。

这是我当前要取消分配的查询:

update App set App.Person1 = NULL where App.Person1 = '" . addslashes(strip_tags($_SESSION["user"])) . "' and App.ID = '" . addslashes(strip_tags($_SESSION["edit"])) . "' || update App set App.Person2 = NULL where App.Person2 = '" . addslashes(strip_tags($_SESSION["user"])) . "' and App.ID = '" . addslashes(strip_tags($_SESSION["edit"])) . "'"

问题:它似乎没有用这个查询更新字段

示例:

我这里有三列,我登录为 Tommy:

App.ID App.Person1 App.Person2
1      Tommy       Green

因为 Tommy 存在于 Person1,当我点击按钮时,我希望它变成 null

这是另一个例子:

App.ID App.Person1 App.Person2
1      Green       Tommy

因为TommyPerson1中不存在,所以我想把Person2改成null

问题:是否有使用嵌套查询或 case 语句的解决方案可用于解决此问题?

这就是您想要的吗?

update App
    set Person1 = NULL
    where Person1 = $_SESSION["user"];

update App
    set Person2 = NULL
    where Person2 = $_SESSION["user"];
$sql = 'SELECT * FROM App WHERE Person1 = :person1 OR Person2 = :person2';
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':person1' $_SESSION["user"], PDO::PARAM_STR);
$stmt->bindValue(':person2' $_SESSION["user"], PDO::PARAM_STR);
if($stmt->execute() === FALSE){
   Throw new \Exception('could not connect!');
}
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as $row){
   if($row['Person1'] == $_SESSION["user"]) {
        //Do update for person1
   }
   else {
      //Do update for person2
   }
}

希望对您有所帮助!