我有一个动态表单,它使用变量并且效果很好,但是我遇到了一个问题,一旦某些POST值被表单提交处理后必须删除它们。
由于变量的性质和这个动态表单的编程动态构建INSERT和UPDATE查询,我需要在$_POST
处理后将它们删除一个变量。
部分表单处理部分位于foreach循环中,包含:
$Fields = array();
$Values = array();
foreach ($_POST as $key=>$value ) :
if (Contains("month", $key)) unset($_POST);
if (Contains("day", $key)) unset($_POST);
if (Contains("year", $key)) unset($_POST);
if (Contains("hour", $key)) unset($_POST);
if (Contains("minute", $key)) unset($_POST);
if (Contains("second", $key)) unset($_POST);
$Fields[] = "`$key`";
$Values[] = isNull($value, $DBName);
endforeach;
$sqlInsert = "INSERT INTO $TableName (".implode(",",$Fields).") VALUES (".implode(",",$Values).")";
Contains()
函数有:
function Contains($searchWord, $fromString) {
if (is_array($fromString)) :
reset($fromString);
$key = key($fromString);
return strpos($key, $searchWord) !== FALSE;
else:
return strpos($fromString, $searchWord) !== FALSE;
endif;
}
我尝试了我能想到的一切,包括:
foreach ($_POST as $key=>$value ) :
if (Contains("month", $key)) unset($_POST[$key]);
if (Contains("day", $key)) unset($_POST[$key]);
if (Contains("year", $key)) unset($_POST[$key]);
if (Contains("hour", $key)) unset($_POST[$key]);
if (Contains("minute", $key)) unset($_POST[$key]);
if (Contains("second", $key)) unset($_POST[$key]);
endforeach;
因为$key
应包含我尝试unset()
的POST字段的名称,但它们不会取消设置。有什么想法吗?
答案 0 :(得分:0)
在我这样做的时候,我刚刚重写并简化了原来的问题,这给了我一个似乎已经完成了这个诀窍的想法。我没有使用未设置,而是继续使用:
if (Contains("month", $key)) continue;
if (Contains("day", $key)) continue;
if (Contains("year", $key)) continue;
if (Contains("hour", $key)) continue;
if (Contains("minute", $key)) continue;
if (Contains("second", $key)) continue;