我看到这篇文章,它引导我尝试将旧代码更新为 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();
提前感谢您的帮助。
最佳答案
我什至不知道你打算用它做什么CASE
陈述。您犯了多个语法错误和逻辑错误。
UPDATE
后面应该是您要更改的表,而不是CASE
表达。如果您使用
CASE <expr>
,然后每个WHEN
应该是一个值,而不是 bool 表达式。您将无法在
UPDATE
中设置多列一内CASE
表达。没有
WHERE
CASE
中间允许使用的子句声明。我不知道你为什么要插值
$acctype
当其他变量作为参数包含时,将其添加到表达式中。是$acctype
列的名称或其他名称?
我只是猜测,但这可能是形成 UPDATE
的更好情况。动态查询而不是使用 CASE
.
关于php - 如何正确使用 CASE..WHEN 使用 PDO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21663435/