而不是在每一個我運行一個條件檢查對$_POST
陣列的測試,更好的做法是在循環前過濾$_POST
,然後您可以在每次迭代時使用您的prepared statement query(出於安全原因),而不使用任何條件表達式。
從您的示例輸入中可以看出,您期待空值或數值。另外,數據庫表結構使用從1
開始的自動遞增的id
's是很常見的。我將提供3種不同的方法,以便您可以爲您的項目選擇最有效的方法。過濾後所有方法都將原始密鑰(id
)保存在$_POST
中。
方法#1:(刪除所有空,空,假-Y,從$_POST
零肥胖型元素)
foreach(array_filter($_POST) as $id=>$value){
// insert your prepared statement query code block here
}
方法#2:(僅允許來自元素$_POST
,其值大於零)
foreach(array_filter($_POST,function($v){return $v>0;}) as $id=>$value){
// insert your prepared statement query code block here
}
方法#3 :(只有pe從$_POST
RMIT元件與該是一個整數的值)
foreach(array_filter($_POST,function($v){return is_int($v);}) as $id=>$value){
// insert your prepared statement query code block here
}
這裏是所有三種方法的一個demonstration。
此外,在Sahil的答案有一些不必要的檢查。
首先,檢查if(is_array($_POST))
將總是給出true
結果,因爲$_POST是superglobal陣列。如果你不相信我,你可以信任deceze的評論here,因爲他的用戶名後面有一顆奇特的鑽石。例外情況是,如果您使用的是Content-Type:text/xml
,但肯定情況並非如此。
其次,在$_POST
上檢查count()
是不必要的,因爲如果數組爲空,foreach()
循環將不會迭代一次。
爲什麼不直接使用foreach($ _POST as $ id => $ value)? – Igor
'foreach($ _ POST爲$ id => $ value)'? – splash58
謝謝大家的意見和解答。它現在有效! –