我想清除数据库中的特定行值,使用此for循环

时间:2011-11-26 04:10:32

标签: php mysql sql

我想清除特定的行值为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);

2 个答案:

答案 0 :(得分:1)

仅供参考,删除=删除记录

如果您希望将列值设置为NULL,则可以执行以下操作: -

 UPDATE {$table}
 SET game{$i} = NULL, ...; // you don't even need a user = *

答案 1 :(得分:1)

将值设置为NULLUPDATE,不同于从数据库中删除记录(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