1

我有这个系统,我将复选框数据存储到一个数组中。因此,如果选中它,它将把值放入数组中。假设有 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 。

4

5 回答 5

1

为什么不对数据库中的DEFAULT 0每个字段应用约束?check{n}

这样,(1)无论界面如何,您都可以保护自己的数据;(2)需要编写的代码更少,因为需要的检查更少。

于 2013-10-07T11:17:49.670 回答
0

他们不会有价值观。

您还想使用mysqli_real_escape_string.

如果它不存在,我会isset在每个复选框项目上做一个并将其设置为 0。

根据要求的代码示例:

$checkbox[0] = isset($_REQUEST['checkboxName']) ? mysql_real_escape_string($_REQUEST[$_REQUEST['checkboxName']]) ? 0 ;

如果值为 always 1,则使用1而不是mysql_real_escape_string($_REQUEST[$_REQUEST['checkboxName']])

于 2013-10-07T11:04:13.670 回答
0
    if(!isset($checkbox[1]))
           $checkbox[1]=0;
于 2013-10-07T11:07:45.633 回答
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;

或者

// 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 获取任何值,因此无需检查空

于 2013-10-07T11:10:08.573 回答
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).')';
于 2013-10-07T11:10:35.393 回答