-1

我在 MySQL 表中有一系列列(check1、check2、check3 等),它们设置为 0 或 1,具体取决于它们在 PHP 表单中的对应字段是否为空(sig1、sig2、sig3 等) . 例如,如果一个字段 (sig1) 不为空,则其对应的列 (check1) 设置为 1。我有 15 个这样的字段,我想知道是否有办法将列设置为正确的值环形。我知道我可以像这样编写我的 PHP 来循环表单字段本身:

for($i=1; $i<=15; i++) {
 if(!empty($_POST['sig'.$i]) {
   //Update corresponding MySQL check column
   }
 }

我不知道如何告诉数据库要更新哪个检查列。有没有办法让循环区分 check1、check2 等?

4

2 回答 2

0

!empty('sig'.$i)永远不会是假的。你失踪了$。试试这个:

for($i=1; $i<=15; i++) {
  if(!empty($_POST['sig'.$i]) {
    //Update corresponding MySQL check column
  }
}

如果您不想使用 $_POST (启用全局变量):

for($i=1; $i<=15; i++) {
  if(!empty(${'sig'.$i}) {
    //Update corresponding MySQL check column
  }
}
于 2013-11-04T14:22:55.683 回答
0

您可以单独更新所有 15

for($i=1; $i<=15; i++)
{
    mysqli_query("UPDATE table SET check" . $i . " = " .
                    (empty($_POST['sig' . $i]) ? "0" : "1"));
}

但请不要这样做!您可以使用单个查询一次更新它们(更有效):

$query = "UPDATE table SET ";
for($i=1; $i<=15; i++)
{
    if($i > 1) { $query .= ", "; }
    $query .= "check" . $i . " = " . (empty($_POST['sig' . $i]) ? "0" : "1"));
}
mysqli_query($query);
于 2013-11-04T14:24:41.343 回答