2012-09-21 30 views
1

循环我有表“章” 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,这似乎凌乱。

如何去这样做的任何建议?

在此先感谢!

+3

为什么你需要循环$ _POST吗?这是一个关联数组,显然你已经知道关键字了? – dbf

+0

我以为我必须通过$ _POST循环,因为显示的条目数是动态的......这取决于数据库中的数量。有没有更好的方法来解决这个问题? –

+0

我只是不明白在遍历$ _POST阵列点,使用'$ _ POST [“身份证”]'是一样的答案给出的女巫'情况“id'',在这两种情况下,你需要静态乐于助人设置密钥名称。 – dbf

回答

5

您可以在结构化数据使用$_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"; 
} 
+0

另外,我不需要通过$ book做另一个foreach循环,因为它本身是一个数组(由名称和密码组成)? –