我在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等?
答案 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);