在PHP FOR循环中更新MySQL字段

时间:2013-11-04 14:18:06

标签: php mysql sql

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

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

我无法弄清楚如何告诉数据库更新哪个检查列。有没有办法让循环区分check1,check2等?

2 个答案:

答案 0 :(得分: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
  }
}

答案 1 :(得分: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);