2

テーブル「章」を持つMySQLデータベースがあります。テーブル「chapters」には、(1) ID、(2) 名前、(3) パスワードの 3 つの列があります。

PHP を使用して、データを「チャプター」からテキスト ボックスに動的に出力しています。結果は次のようになります。

<form name="current_chapters" method="post" action="UpdateChapters.php">    
<input type = 'text' name='id' value='{$row['id']}'>
<input type = 'text' name='name' value='{$row['name']}'>
<input type = 'password' name='password' value='New Password'>
<input type = 'submit'>
</form>

このページはパスワードのリセット (表示ではなく) に使用されるため、「新しいパスワード」のデフォルト値であることに注意してください。

その $_POST データをすべてループしてから、このデータの元の元の「chapters」テーブルを更新する最良の方法を探しています。

foreach を介して $_POST をループし、入力名を「id[]」、「name[]」、および「password[]」に変更して遊んでみましたが、特に最もエレガントなアプローチではないようですid の部分では... id[0] = 133 のようなものになってしまいます。

これを行う方法に関する推奨事項はありますか?

前もって感謝します!

4

1 に答える 1

6

を使用して構造化データを渡すことができます$_POST。これにより、同じタイプの複数のフィールドの処理が容易になります。

<input name="book[12][name]" value="name of book 12">
<input name="book[12][password]" value="password for book12">
<input name="book[99][name]" value="name of book 99">
<input name="book[99][password]" value="password for book99">

$_POSTこれにより、次のようなデータ構造が作成されます。

[book] => Array
    (
        [12] => Array
            (
                [name] => name of book 12
                [password] => password for book 12
            )

        [99] => Array
            (
                [name] => name of book 99
                [password] => password for book 99
            )

    )

次に、次のように繰り返すことができます。

foreach ($_POST['book'] as $book_id => $book) {
  // Watch out for SQL injection
  $sql = "UPDATE book SET name = '{$book['name']}', password = '{$book['password']}' WHERE id = $book_id";
}
于 2012-09-22T00:07:37.020 に答える