【问题标题】:Update Single DB Record, Using PHP While Loop更新单个数据库记录,使用 PHP While 循环
【发布时间】:2013-07-13 11:39:47
【问题描述】:

我觉得这个问题有一个简单的解决方案,但我想不通。我正在使用 while 循环显示我的数据库的字段。在每个 while 循环的末尾是一个表单输入,管理员可以在其中批准用户。 (所有已批准的需要做的就是在该特定记录的已批准列中将 1 更改为 2)。

所有已批准的记录都会更改,而不是我想要的特定记录。我的问题是如何一次只选择和更改一条记录。 (获得批准的记录)。非常感谢您为我提供的任何帮助。

    <?php
      //select the database to write to
      $unapprovedTeachers = mysql_query("SELECT * FROM members_teachers WHERE approved = '1'", $dbc) or die("Could not select the unapproved teachers at this time.");
        //While loop to cycle through the rows
        while($row = mysql_fetch_assoc($unapprovedTeachers)){
            $teacher_id = $row['id'];
            echo $teacher_id;
    ?>
    <ul class="admin-fields">
    <?php
        foreach($row as $field){
            if(empty($field)){
                echo "....";
            }
            print '<li>' .$field.' </li>';
        }//End For Each Loop
        //print $teacher_id;


    ?>
            </ul>
    <footer>
     <?php
        if(isset($_POST['approve'])){
        mysql_query("UPDATE members_teachers SET approved = '2' WHERE id= ".$teacher_id."", $dbc) or die ("Oops something went wrong");
    }
      ?>
        <ul>
            <li>
                <form method="post">
                        <button name="approve" id="approve" type="submit">approve</button>
                </form>
               </li>
       </ul>
   </footer>
   <!--End New Row-->
  </section>
      <?php
    }//End While Lopp
    mysql_close($dbc);
       ?>
   </div>

【问题讨论】:

  • 您在表单的哪个位置说要更新哪个 id?
  • 这就是为什么您需要将呈现与处理分开的原因。并将LIMIT 1; 附加到您的更新中。并且POST 处理不是内联完成的,而是在脚本之上,在任何输出之前完成,因此您有机会重定向。

标签: php sql while-loop sql-update


【解决方案1】:

您只是为显示的每一行数据输出 SAME 表单。您至少需要在每个表单中嵌入相关成员的 ID,以便表单可以提交该特定 ID,例如

<form method="post">
        <input type="hidden" name="teacher_id" value="$teacher_id" />
        <button name="approve" id="approve" type="submit">approve</button>
</form>

注意隐藏字段。当按钮被提交后,您就可以

$teacher_id = $_POST['teacher_id'];

检索 ID,然后发出更新查询。

【讨论】:

  • 这就像一个魅力!谢谢,感谢 Marc B 的帮助!
猜你喜欢
  • 1970-01-01
  • 2010-10-08
  • 1970-01-01
  • 2012-12-30
  • 2017-10-08
  • 2021-04-07
  • 2018-12-10
  • 1970-01-01
相关资源
最近更新 更多