簡體   English   中英

將數組值插入數據庫

[英]Insert array values into a database

我有一個將復選框數據存儲到數組中的系統。 因此,如果選中它,則會將值放入數組中。 假設有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(如果尚未檢查)。

為什么不只對數據庫中的每個check{n}字段應用DEFAULT 0約束呢?

這樣,(1)無論接口如何,您都將使自己的數據受到保護;(2)由於需要進行較少的檢查,因此可以編寫更少的代碼。

他們將沒有價值。

您還想使用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']])

    if(!isset($checkbox[1]))
           $checkbox[1]=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獲取任何值,因此不需要檢查為空

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM