PHP 从大型 SQL 结果集中检索变量


PHP retrieving variables from a large SQL result set

我一直在做我自己的PHP项目。我遇到了一个障碍。我正在尝试检索数据库的结果并为每个结果集打印出一个表单。

然后,我希望与一个特定结果进行交互,要么删除它,要么将其传递给函数等。

这是我当前的代码:

    <?php
                while($row = mysqli_fetch_array($result)){
                echo '<div id="post">'; ?>
                <form action="" method="post">
            <?php
                echo "<font size=4>".$row['post']."<br>"; 
                echo "posted by : ".$row['username']."<br>";
                $id = $row['p_id']; ?>
                <input type="submit" name="choice" value="Y">
                <input type="submit" name="choice" value="N">
                </form>
                <br>
                </div>
            }
    <?php
    if($_POST['choice']=="Y"){
     // progress
     functionA();
    }
    else if($_POST['choice']=="N"){
     // delete or remove
     functionB();
    }
 ?>

所以我在这里的目标是单击 Y 以处理该特定结果或单击 N 以删除/删除结果。但是,目前通过单击任一按钮,所有结果都将被删除或进行。我确实知道应该使用 id 来区分帖子,但我似乎无法让它工作。按下按钮后,它将所有结果传递给任一函数。

首先,我想你想知道要删除的记录。因此,向表单添加输入:

<input type="hidden" name="id" value="<?php echo $row['p_id']; ?>">

然后,在脚本中调用:

if( $_POST['choice'] == "Y" )
{
    // progress
    functionA( $_POST['id'] );
}
elseif( $_POST['choice']=="N" )
{
    // delete or remove
    functionB( $_POST['id'] );
}

其他问题:如何在函数中使用数据库连接?假设您的 mysqli 连接名为 $conn ,请按以下方式调用函数:

functionA( $_POST['id'], $conn );

旁注:首先处理$_POST值,然后检索数据库记录并打印出来。

旁注2:看看准备好的声明。


  • 阅读有关变量作用域的更多信息
  • 阅读有关预准备语句的更多信息

对值中包含 id 的每个项目使用两个不同的<input type="radio">,并让用户选择要删除和处理的项目。

因此,对于 id 1的项目,输出的 HTML 如下所示:

<input type="radio" name="items[1]" value="delete"><input type="radio" name="items[1]" value="process">

name强制项目以数组的形式进入_POST,其中 id 作为键,所选操作作为其值。

示例 html:https://jsfiddle.net/gu1gkwod/