Php 使用PDO时如何正确使用CASE

Php 使用PDO时如何正确使用CASE,php,mysql,pdo,case,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

我看到了这篇文章,它引导我尝试将旧代码更新为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();

提前感谢您的帮助。

我甚至不知道您打算如何处理该案例陈述。您犯了多个语法错误和逻辑错误

UPDATE后面应该是要更改的表,而不是大小写表达式

如果使用CASE,那么每个WHEN都应该是一个值,而不是布尔表达式

您将无法在一个CASE表达式中设置更新中的多个列

在case语句中间没有WHERE子句。

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


我只是猜测,但这可能是一个更好的情况,动态形成更新查询,而不是使用CASE。

我们不知道。。。在球场上吗?它起作用了吗?你有错误吗?