2

我有一个带有“章节”表的 MySQL 数据库。表“章节”具有三列:(1) id、(2) 名称、(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 数据的最佳方法,然后更新该数据最初来自的原始“章节”表。

我尝试通过 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 回答