我想清除特定的行值为null,我有一个我想要使用的循环原型。但是我担心它会删除表格中的所有内容。数据库有列:user,password,correct,wrong,game1,game2,game3 ..... game16。我想清除以游戏开头的列,但没有别的。这似乎很简单,但我似乎无法使它工作。有人可以帮我理解吗?
$vals=array();
$sql="DELETE ";
for ($i=1; $i<=16; ++$i) {
if (isset(game$i)) { continue; }
if ($i != 1) {
$sql .= ",";
}
$sql .= "game$i=:game$i";
$vals[":game$i"]="game$i";
"game$i FROM user WHERE user = * ";
}
$statement=$db->prepare($sql);
$statement->execute($vals);
答案 0 :(得分:1)
仅供参考,删除=删除记录
如果您希望将列值设置为NULL,则可以执行以下操作: -
UPDATE {$table}
SET game{$i} = NULL, ...; // you don't even need a user = *
答案 1 :(得分:1)
将值设置为NULL
是UPDATE
,不同于从数据库中删除记录(DELETE
)
为了防止必须动态创建SQL语句,看起来你可以(并且可能应该)只写出整个SQL脚本。
UPDATE u
SET u.game1 = NULL
, u.game2 = NULL
, u.game3 = NULL
, u.game4 = NULL
, u.game5 = NULL
, u.game6 = NULL
, u.game7 = NULL
, u.game8 = NULL
, u.game9 = NULL
, u.game10 = NULL
, u.game11 = NULL
, u.game12 = NULL
, u.game13 = NULL
, u.game14 = NULL
, u.game15 = NULL
, u.game16 = NULL
FROM user AS u
FROM user AS u
为用户创建别名,因此我可以使用单个字符u
引用该表。当我指定UPDATE u(使用别名)时,您会看到这种情况。 W3Schools可能比我更好地解释SQL别名。
如果您希望WHERE
影响所有用户,则不需要(也不应该)UPDATE
子句,这是因为没有WHERE