如何使用PDO正确使用CASE..WHEN

时间:2014-02-09 18:56:41

标签: php mysql pdo case

我遇到过这篇文章,它引导我尝试将旧代码更新为PDO。我的问题是我甚至在这个代码的球场?我能改进它还是更好的替代方案来完成它?

   $qur = $db->prepare("UPDATE CASE site
   WHEN $acctype != 1 THEN name=:name, url=:url, lang=:lang, state=:state, hs=:hs, cph=:cph WHERE id=:id && usrid=:usrid
   ELSE name=:name, url=:url, lang=:lang, state=:state, hs=:hs WHERE id=:id && usrid=:usrid
                              END");
                $qur->bindParam(':name', $sname);
                $qur->bindParam(':url', $surl);
                $qur->bindParam(':lang', $slang);
                $qur->bindParam(':state', $is);
                $qur->bindParam(':hs', $hs);
                $qur->bindParam(':cph', $cph);
                $qur->bindParam(':id', $sid);
                $qur->bindParam(':usrid', $userid);
                $qur->execute();

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我甚至不能告诉你打算用CASE声明做什么。您已经出现了多个语法错误和逻辑错误。

  • UPDATE后面应该跟您要更改的表格,而不是CASE表达式。

  • 如果您使用CASE <expr>,那么每个WHEN应该是一个值,而不是布尔表达式。

  • 您无法在UPDATECASE表达式中设置多个列。

  • WHERE声明中间不允许CASE条款。

  • 我不知道为什么在将其他变量作为参数包含时,将$acctype插入到表达式中。 $acctype是列的名称还是什么?

我只是在猜测,但这可能是一种更好的情况,可以动态地形成UPDATE查询,而不是使用CASE