更新查询以切换数据库中的值

问题描述 投票:0回答:1

我需要帮助更新数据库。我的PHP代码如下所示。 $sql不起作用,如果有No,我想将user_blocked设置为Yes,如果有Yes则将其设置为No。对不起我的英文,对不起我的代码,但我是初学者。

<?php 
require('dbconnect.php');

if(isset($_POST['block_user'])) {

$user_id = $_POST['user_id_block'];
$sql = "UPDATE users SET user_blocked='No' WHEN user_blocked='Yes' AND 
user_blocked='Yes' WHEN user_blocked='No' WHERE user_id='$user_id'";
$retval = mysql_query($sql, $conn);

if(! $retval) {
    die('Could not block/unblock user: ' . mysql_error());
} else {
    header('Refresh:0');
}
mysql_close($conn);

}
?>

错误是:

您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在'WHEN user_blocked ='是'和'user_blocked ='是'时使用正确的语法WHEN user_blocked ='No'用户'在第1行。

我不知道什么是正确的语法。

$sql = "UPDATE users SET user_blocked='No' WHEN user_blocked='Yes' AND 
user_blocked='Yes' WHEN user_blocked='No' WHERE user_id='$user_id'";
mysql
1个回答
1
投票
$sql = "UPDATE `users` SET `user_blocked` = CASE
    WHEN `user_blocked` = 'No' THEN 'Yes'
    WHEN `user_blocked` = 'Yes' THEN 'No'
    END WHERE user_id='$user_id'";

另外:你使用mysql_*()函数,从PHP 7开始不推荐使用。使用mysqli_*()PDO代替。您的代码容易受到SQL注入攻击,请使用prepared statements

© www.soinside.com 2019 - 2024. All rights reserved.