[英]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.