のではなく、すべての私の条件チェックを実行しているを使用してはいけませんループの前に$_POST
をフィルターに掛ける方が良い場合は、条件式なしですべての反復でprepared statement query(セキュリティ上の理由から)を使用することができます。
サンプル値から、空の値または数値のいずれかが予想されるようです。また、データベーステーブル構造では、id
の自動インクリメント1
を使用するのが一般的です。私はあなたのプロジェクトに最も効果的なものを選ぶことができるように、3つの方法を提供します。すべてのメソッドは、フィルタリング後に元のキー(id
)を$_POST
に保存します。
方法#1:(、全ヌルを除去空、偽Y、$_POST
からゼロっぽい要素)
foreach(array_filter($_POST) as $id=>$value){
// insert your prepared statement query code block here
}
方法#2:(唯一の要素を許可$_POST
の値が0より大きい)
foreach(array_filter($_POST,function($v){return $v>0;}) as $id=>$value){
// insert your prepared statement query code block here
}
方法3ここで、整数値を有する$_POST
からRMIT要素)
foreach(array_filter($_POST,function($v){return is_int($v);}) as $id=>$value){
// insert your prepared statement query code block here
}
は、すべての3つの方法のdemonstrationあります。
さらに、サハイの答えにはいくつかの不必要なチェックがあります。
最初に、if(is_array($_POST))
をチェックすると、$_POSTがsuperglobalなので、常にtrue
という結果が得られます。あなたが私を信じていないなら、decezeのコメントhereを彼のユーザー名の後にその素晴らしいダイヤモンドの1つを持っていると信じることができます。例外は、あなたがContent-Type:text/xml
を使用している場合ですが、確かに今回はそうではありません。
foreach()
ループが空であれば、繰り返し実行されなくなるため、のcount()
をチェックする必要はありません。
なぜforeach($ _POSTを$ id => $ value)だけ使用しないのですか? – Igor
'foreach($ _ POSTは$ id => $ value)'ですか? – splash58
コメントと回答ありがとうございました。それは今働きます! –