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

标签 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();

提前感谢您的帮助。

最佳答案

我什至不知道你打算用它做什么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/

相关文章:

php - 在 PHP : capture all outputs 中运行 Python 脚本

php - 如何降低数据传输成本? Amazon S3 --> Cloudflare --> 访问者

php - 错误 : The server is not responding (or the local MySQL server's socket is not correctly configured)

PHP - 跟踪投票的 IP 的最佳方式

mysql - 使用 AJAX 从 PHP 文件调用一个查询,该文件有多个

javascript - 移动网络服务无法使用

javascript - 通过node js将大blob插入到vitess中

php - Mysql select where语法错误

PHP MySQL 将多个 fetchcolumn 组合成一个查询

MySQL PDO - 检查是否插入了 INSERT IGNORE INTO