ホームページ >バックエンド開発 >PHPチュートリアル >PHP で複数のチェックボックス配列とテキストボックス配列を MySQL データベースに挿入するにはどうすればよいですか?
複数のチェックボックス配列を挿入する
チェックボックスの値が正しくない場合データベースに挿入される際、HTML の name 属性のインデックスと PHP 配列要素の間に不一致が生じる可能性があります。これを解決するには、各チェックボックス要素に一意のインデックスを明示的に設定する必要があります。
<code class="html"><input tabindex="1" name="checkbox[0]" type="checkbox" value="17" /> <input tabindex="1" name="checkbox[1]" type="checkbox" value="20" /></code>
これにより、各チェックボックスが $_POST['checkbox'] 配列内で独自の一意のインデックスを持つことが保証されます。
チェックされていないチェックボックスが挿入されないようにする
チェックされていないチェックボックスがデータベースに挿入されないようにするには、値を挿入する前に各チェックボックスがチェックされているかどうかを明示的にチェックする必要があります。
<code class="php">if(isset($_POST['checkbox'])) { foreach($_POST['checkbox'] as $check) { if(!empty($check)) { $check = implode(',', $_POST['checkbox']); $name = implode(',', $_POST['item']); $quantity = implode(',', $_POST['quantity']); } }</code>
挿入クエリにプリペアド ステートメント メソッドを使用する
SQL インジェクション攻撃を防ぐために、mysql_query を使用する代わりに、挿入クエリにプリペアド ステートメントを使用することをお勧めします。挿入メソッドを変更する方法は次のとおりです。
<code class="php">$stmt = $conn->prepare("INSERT INTO purchases (Product, Quantity, Price) VALUES (?, ?, ?)"); $stmt->bind_param("sis", $name, $quantity, $price); foreach ($_POST['checkbox'] as $i => $price) { $name = $_POST['name'][$i]; $quantity = $_POST['quantity'][$i]; $stmt->execute(); }</code>
その他の考慮事項
以上がPHP で複数のチェックボックス配列とテキストボックス配列を MySQL データベースに挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。