将数组值插入数据库

时间:2013-10-07 11:02:13

标签: php mysql

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

5 个答案:

答案 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).')';