我无法获取表单来更新从复选框传递的信息.我得到了这个代码.
$one = isset($_POST['one']) ? 'on' : 'off';
Run Code Online (Sandbox Code Playgroud)
只要我单独调用每个复选框,这都很有效.我的问题是我总共有大约200个复选框.
这是我正在使用的代码UPDATE.任何人都可以帮我找出在我现在的代码中插入代码的位置吗?我尝试了各种各样的变化.
if($_POST['submit']){
if(!empty($applicant_id)){
$sql = "UPDATE play SET ";
foreach($_POST as $key => $value){
if(($key != 'submit') && ($key != 'applicant_id')){
$sql .= $key. " = '$value',";
}
}
$sql = substr($sql, 0, -1);
$sql .= " WHERE ".$applicant_id." = $applicant_id";
$result = mysql_query($sql,$db) or die(mysql_error(). "<br />SQL: $sql");
}
}
Run Code Online (Sandbox Code Playgroud)
解决方案是从您已知的可能的复选框列表开始,array()或者类似.我可以假设您使用这样的列表生成表单吗?如果没有,你可能应该.然后,您可以使用相同数据的循环来检查每个复选框是否存在.
其他一些提示:
isset($array[$key])不推荐.虽然它在大多数情况下都是可靠的,但如果$array[$key]是,它将失败null.正确的电话是array_key_exists($key, $array).
在为SQL编写字符串片段时,就像您正在做的那样,执行以下操作更为优雅:
$sqlvalues = array();
foreach( $options as $field ) {
if( array_key_exists('checkbox_'.$field, $_POST) )
$sqlvalues[] = $field.' = \'on\'';
else
$sqlvalues[] = $field.' = \'off\'';
}
mysql_query('UPDATE '.$table.' SET '.implode(', ', $sqlvalues).' WHERE applicant_id = '.$applicant_id);
Run Code Online (Sandbox Code Playgroud)