我遇到过这篇文章,它引导我尝试将旧代码更新为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();
提前感谢您的帮助。
答案 0 :(得分:0)
我甚至不能告诉你打算用CASE
声明做什么。您已经出现了多个语法错误和逻辑错误。
UPDATE
后面应该跟您要更改的表格,而不是CASE
表达式。
如果您使用CASE <expr>
,那么每个WHEN
应该是一个值,而不是布尔表达式。
您无法在UPDATE
个CASE
表达式中设置多个列。
WHERE
声明中间不允许CASE
条款。
我不知道为什么在将其他变量作为参数包含时,将$acctype
插入到表达式中。 $acctype
是列的名称还是什么?
我只是在猜测,但这可能是一种更好的情况,可以动态地形成UPDATE
查询,而不是使用CASE
。