将字段设置为 1,但如果它已经是 1,则将其设置为 NULL

Set field to 1, but if it's already 1 set it to NULL

我想用 1 更新 table 中的一行,但如果它已经是 1,请将其设置为 NULL,我如何最有效地检查该行是否已经是 1?

<?php
session_start();
$ai = $_POST['ai'];
$set = NULL or 1 depending on row fav is NULL or 1 
include ("connect.php");
$sql = $con->prepare('UPDATE list SET fav = ? WHERE id=?');
$sql->bind_param("si",$set, $ai);
$sql->execute();
$sql->close();
?>

我想你想要一个 case 表达式:

update list
set fav = (case when fav = 1 then null else 1 end)
where id = ?

如果 fav1,则将其设置为 null,否则将其设置为 1

此查询接受单个参数,即您要 update 的行的 id

看来您只需要在 1 和 NULL 之间切换。

UPDATE list SET fav = IF(fav IS NULL, 1, NULL) WHERE id=?