我有这个系统,我将复选框数据存储到一个数组中。因此,如果选中它,它会将值放入数组中。假设有6个复选框,我检查最后3个,然后数组值[3] [4]和[5]将有值,对吗?确定。
现在,如果数组值[0] [1]和[2]为0,因为它们尚未被检查,它们的值是多少?
问题是,当我对数据库进行MySQL插入并使用此代码时?
mysqli_query($con,"INSERT INTO accounts (chk1, chk2, chk3, chk4, chk5, chk6) VALUES ('$checkbox[0]', '$checkbox[1]', '$checkbox[2]', '$checkbox[3]', '$checkbox[4]', '$checkbox[5]'");
现在,当该查询执行时,如果第一个数组什么都没有,它将跳过它们并假装它们不在那里。有没有办法可以让他们只是在没有被检查的情况下将它们设为0。
答案 0 :(得分:1)
为什么不在数据库中的每个DEFAULT 0
字段中应用check{n}
约束?
这样,(1)无论接口如何,你都会使自己的数据得到保护;(2)编写的代码会更少,因为需要的检查更少。
答案 1 :(得分:0)
他们没有价值观。
您还希望使用mysqli_real_escape_string
进行健全检查。
我会在每个复选框项目上执行isset
,如果不存在,则将其设置为0.
请求的代码示例:
$checkbox[0] = isset($_REQUEST['checkboxName']) ? mysql_real_escape_string($_REQUEST[$_REQUEST['checkboxName']]) ? 0 ;
如果值始终为1
,则使用1
代替mysql_real_escape_string($_REQUEST[$_REQUEST['checkboxName']])
答案 2 :(得分:0)
if(!isset($checkbox[1]))
$checkbox[1]=0;
答案 3 :(得分:0)
将此代码放在查询之前
$checkbox[0]=(isset($checkbox[0]))?$checkbox[0]:0;
$checkbox[1]=(isset($checkbox[1]))?$checkbox[1]:0;
$checkbox[2]=(isset($checkbox[2]))?$checkbox[2]:0;
$checkbox[3]=(isset($checkbox[3]))?$checkbox[3]:0;
$checkbox[4]=(isset($checkbox[4]))?$checkbox[4]:0;
$checkbox[5]=(isset($checkbox[5]))?$checkbox[5]:0;
OR
// get $_POST value
function initPostValue($elementVar, $defVal=null) {
if(!isset($_POST[$elementVar])){
$_POST[$elementVar] = $defVal;
}
return $_POST[$elementVar];
}
// get $_REQUEST value
function initRequestValue($elementVar, $defVal=null) {
if(!isset($_REQUEST[$elementVar])){
$_REQUEST[$elementVar] = $defVal;
}
return $_REQUEST[$elementVar];
}
// get $_GET value
function initGetValue($elementVar, $defVal=null) {
if(!isset($_GET[$elementVar])){
$_GET[$elementVar] = $defVal;
}
return $_GET[$elementVar];
}
Example : $checkbox[0] = initRequestValue('checkbox[0]',0);
使用上面的函数从$ _GET,$ _ POST,$ _ REQUEST获取任何值,所以不需要检查空
答案 4 :(得分:0)
$data = array();
for($a=0; $a<max(array_keys($checkbox)); $a++) {
$data["chk$a"] = $checkbox[$a] ?: '0';
}
$sql = 'INSERT INTO accounts (\''.implode('\',\'', array_keys($data)).'\') VALUES ('.implode(',',$data).')';