Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP While循环更新单个DB记录_Php_Sql_While Loop_Sql Update - Fatal编程技术网

使用PHP While循环更新单个DB记录

使用PHP While循环更新单个DB记录,php,sql,while-loop,sql-update,Php,Sql,While Loop,Sql Update,我觉得这个问题有个简单的解决办法,但我想不出来。我使用while循环显示数据库的字段。在每个while循环的末尾是一个表单输入,管理员可以在其中批准用户。(所有批准的需要做的就是在该特定记录的“批准”列中将a 1更改为a 2) 所有批准的记录都会被更改,而不是我想要的特定记录。我的问题是如何一次只选择和更改一条记录。(获得批准的记录)。非常感谢你能为我提供的任何帮助 <?php //select the database to write to $unapp

我觉得这个问题有个简单的解决办法,但我想不出来。我使用while循环显示数据库的字段。在每个while循环的末尾是一个表单输入,管理员可以在其中批准用户。(所有批准的需要做的就是在该特定记录的“批准”列中将a 1更改为a 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,以便表单可以提交该特定ID,例如

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

批准
注意隐藏的字段。当按钮被提交时,您可以

$teacher\u id=$\u POST['teacher\u id']


若要检索ID,请发出更新查询。

您在表单的何处指定要更新的ID?这就是为什么需要将演示与处理分开。并追加
LIMIT 1到您的更新。而
POST
处理不是内联完成的,而是在任何输出之前,在脚本的顶部完成的,这样你就有机会重定向。这很有魅力!谢谢你,谢谢你的帮助,马克B!