如果column1是user,则插入其中,否则插入第2列

时间:2015-02-01 15:19:25

标签: php mysql sql session select

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

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

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

由于Tommy中不存在Person1,我希望Person2更改为null

问题:是否有使用嵌套查询或案例陈述的解决方案可用于解决此问题?

2 个答案:

答案 0 :(得分:1)

$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
   }
}

希望有所帮助!

答案 1 :(得分:0)

这基本上是你想要的吗?

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

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