如何更新对应于其当前状态的列核心

时间:2019-07-08 15:21:55

标签: php mysql sql xampp

我正在使用xampp env构建一个简单的购物清单应用程序,

并且我正在尝试使“标记为已完成”的btn工作。

我创建了列“ is_complete”,默认情况下该列为“ false”字符,

并且我想让btn在true和false之间切换此列。

我正在尝试

` <? php

include('config/dbConnect.php');

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

    $id_to_mark = mysqli_real_escape_string($conn, $_POST['id_to_mark']);

    $sql = "UPDATE items SET is_completed = !is_completed WHERE id = $id_to_mark";

    if(mysqli_query($conn, $sql)){
        header('Location: index.php');
    } else {
        echo 'query error: '. mysqli_error($conn);
    }
}

?>

 <form action="<?php echo $_SERVER['PHP_SELF'] ?>"  method="POST">
  <input type="hidden" name="id_to_mark" value="<?php echo $item['id']; ?>">
  <input type="submit" name="done" value="Done" class="btn brand green z-depth-0">
 </form>`

仅当我的数据库中有一张表时,它才能工作。否则SET is_completed = !is_completed不知道引用是什么(对我来说这完全有意义)

prblm是,当我尝试执行类似SET is_completed = !($item['is_completed'])的操作时,它给了我一个错误。 当我尝试SET is_completed = $newStatus时,我在外面$newStatus = !($item['is_completed'])仍然犯错:(

(也曾尝试将php标记放入sql arg中,但事实证明这完全是非法的...)

有什么建议吗?

谢谢:)

1 个答案:

答案 0 :(得分:0)

您可以使用以下查询:

$sql = "UPDATE items SET is_completed = NOT is_completed WHERE id = $id_to_mark";

即用“ NOT”代替“!”