ホームページ >データベース >mysql チュートリアル >チェックされていないチェックボックスを処理し、データ操作を防止しながら、複数のチェックボックスおよびテキストボックス配列から MySQL データベースにデータを効率的に挿入するにはどうすればよいですか?

チェックされていないチェックボックスを処理し、データ操作を防止しながら、複数のチェックボックスおよびテキストボックス配列から MySQL データベースにデータを効率的に挿入するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-09 20:16:14206ブラウズ

How can I efficiently insert data from multiple checkbox and textbox arrays into a MySQL database while handling unchecked checkboxes and preventing data manipulation?

MySQL データベースへの複数のチェックボックスおよびテキストボックス配列の挿入

このシナリオの主な目標は、複数のチェックボックスおよびテキストボックス配列から MySQL データベースにデータを効率的に挿入することです。まず、提示されたコードで発生する特定の課題に対処しましょう。

チェックボックス データの誤解

最初の問題は、チェックボックス データの表示に関するものです。元のコードはチェックされていないチェックボックスを示すことができず、その結果、すべてのチェックボックス オプションが選択されたものとして表示されます。これは、チェックボックスの値の誤った処理が原因です。

不完全なデータ挿入

2 番目の問題は、データがデータベースに適切に挿入されていないことです。データベースへの接続は成功しましたが、データは書き込まれませんでした。これは、配列インデックスの誤った使用法と、MySQLi および mysql_query API の不適切な使用が原因で発生します。

コードの変更

これらの問題を解決するために、次のコードの変更を提案します。

  • HTML フォームを変更して、対応する品目と数量に一致するチェックボックス名を明示的にインデックスします。
  • PHP スクリプト内で、安全かつ効率的なデータ挿入のために MySQLi のプリペアド ステートメントを使用します。
  • 潜在的なデータ操作を防ぐために、HTML から手動の価格値を削除し、処理中にデータベースから取得します。 .
  • システム全体で MySQLi API を一貫して使用できるようにするcode.

更新された HTML:

<form method="POST">

<input type="hidden" name="item[]" value="cupcake">
<input type="text" name="items" value="cupcake" readonly><br>
<b>Price :</b> <span name="price" value="3.00">.00</span><br>
Quantity: <input tabindex="1" name="quantity[]" min="0" max="5" type="number" class="quantity" value="1" /><br>
<input tabindex="1" name="checkbox[0]" type="checkbox" value="17" /><span>Add to Cart</span></label></div></div></td><br>

<input type="hidden" name="item[]" value="cake">
<input type="text" name="items" value="cake" readonly><br>
<b>Price :</b> <span name="price" value="20.00">.00</span><br>
Quantity: <input tabindex="1" name="quantity[]" min="0" max="5" type="number" class="quantity" value="1" /><br>
<input tabindex="1" name="checkbox[1]" type="checkbox" value="20" /><span>Add to Cart</span></label></div></div></td><br>

<input type="submit" name = "insertBT"><br>
</form>

改訂された PHP スクリプト:

if(isset($_POST['insertBT'])) {
    $conn = new mysqli ($servername, $username, $password, $db);
    if($conn->connect_error) {
        die ("Connection Failed : " . $conn->connect_error);
    } else {
        $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();
        }
    }
}

これらの変更を実装することで、スクリプトはチェックボックス データを正しく処理できるようになりました。安全なデータ挿入を実行し、データベースから動的な価格値を取得し、正確な結果を提供します。潜在的なセキュリティ脆弱性を防ぐために、データベース操作を実行する前に、ユーザー入力が適切にサニタイズされていることを必ず確認してください。

以上がチェックされていないチェックボックスを処理し、データ操作を防止しながら、複数のチェックボックスおよびテキストボックス配列から MySQL データベースにデータを効率的に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。