PHP 更新记录按钮没有将信息传递到另一个页面

PHP update record button not passing information to another page

我正在尝试在 php 上创建一个更新记录按钮,单击该按钮后,它将带您到另一个页面,仅显示按下更新按钮的患者信息。我使用以下内容来显示患者信息以及每个患者的更新按钮

patients.php

<?php
        require_once 'includes/dbh.inc.php';

        $result = mysqli_query($conn,"SELECT * FROM patientProfile ORDER BY patientLastName ASC");
        echo "<table class=table table-striped table-sm>
        <tr>

        <th>Last Name</th>
        <th>Name</th>
        <th>Gender</th>
        <th>Age</th>
        <th>Medical Plan</th>
        <th>Record Number</th>
        <th></th>
        </tr>";

        while($row = mysqli_fetch_array($result))
        {
          echo "<tr>";

          echo "<td>" . $row['patientLastName'] . "</td>";
          echo "<td>" . $row['patientName'] . "</td>";
          echo "<td>" . $row['patientGender'] . "</td>";
          echo "<td>" . $row['patientAge'] . "</td>";
          echo "<td>" . $row['medicalPlan'] . "</td>";
          echo "<td>" . $row['patientID'] . "</td>";
          echo "<td>" . '<form method="POST" action="patientEdit.php"><input type="hidden" name="pid" value="$row[patientID]"><input type="submit" name="submit_btn" value="Update"></form>' . "</td>";
          echo "</tr>";
        }
        echo "</table>";

        mysqli_close($conn);
        ?>

当我点击更新按钮时,我希望它将我带到另一个页面,该页面具有以下代码

patientEdit.php

        <?php

        require_once 'includes/dbh.inc.php';
        if (isset($_POST["submit_btn"])) {
          $patient = $_POST["pid"];
        $result = mysqli_query($conn,"SELECT * FROM patientProfile WHERE patientID = '$patient' ");
        echo "<table class=table table-striped table-sm>
        <tr>
        <th>Record Number</th>
        <th>Last Name</th>
        <th>Name</th>
        <th>Gender</th>
        <th>Age</th>
        <th>Email</th>
        </tr>";

        while($row = mysqli_fetch_array($result))
        {
          echo "<tr>";
          echo "<td>" . $row['patientID'] . "</td>";
          echo "<td>" . $row['patientLastName'] . "</td>";
          echo "<td>" . $row['patientName'] . "</td>";
          echo "<td>" . $row['patientGender'] . "</td>";
          echo "<td>" . $row['patientAge'] . "</td>";
          echo "<td>" . '<input type="text" name="changeEmail" value="$row[email]">' . "</td>";
          echo "</tr>";
        }
        echo "</table>";
      }

        mysqli_close($conn);
        ?>

我想要在这个页面上发生的是仅显示我单击更新按钮所在行的患者的信息,我还有一个文本框,我想在其中显示当前电子邮件数据库,以便他们可以在必要时更改它,但不确定这是否是正确的方法。

现在,页面只显示 table headers 没有任何信息,我尝试将 "" 放在 patientID 上,如下所示,但没有结果。

<input type="hidden" name="pid" value="$row["patientID"]">

还尝试将 patientEdit.php 上的查询更改为

$result = mysqli_query($conn,"SELECT * FROM patientProfile WHERE patientID LIKE '%$patient%'

此外,什么也没发生。

如有任何帮助,我们将不胜感激,如果需要更多信息,我们将很乐意提供。

改变这个:

echo "<td>" . '<form method="POST" action="patientEdit.php"><input type="hidden" name="pid" value="$row[patientID]"><input type="submit" name="submit_btn" value="Update"></form>' . "</td>";

为此:

echo "<td>" . '<form method="POST" action="patientEdit.php"><input type="hidden" name="pid" value="' . $row['patientID'] . '"><input type="submit" name="submit_btn" value="Update"></form>' . "</td>";

但是,如果您的 'Update' 按钮仅用于导航至编辑表单,则它可能只是一个 link (<a href="patientEdit.php?pid=YOUR_PATIENT_ID">)。然后,您改为在 patientEdit.php 中读出 $_GET['pid']。另见 When do you use POST and when do you use GET?

初始错误背后的原因是单引号字符串中的变量 will not be expanded。考虑以下内容来证明:

<?php

$row = ['patientID' => 123];

var_dump('$row[patientID]'); // string(15) "$row[patientID]"
var_dump('{$row[patientID]}'); // string(17) "{$row[patientID]}"
var_dump("$row[patientID]"); // string(3) "123"
var_dump("{$row['patientID']}"); // string(3) "123"
var_dump("{$row[patientID]}"); // Fatal error: Uncaught Error: Undefined constant "patientID"