首页 > 解决方案 > PHP更新记录按钮未将信息传递到另一个页面

问题描述

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

病人.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);
        ?>

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

病人编辑.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);
        ?>

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

现在,该页面仅显示没有信息的表头,我尝试将“”放在患者 ID 上,如下所示,但没有结果。

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

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

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

而且,什么也没发生。

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

标签: phphtmlsqlformsphpmyadmin

解决方案


改变这个:

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>";

但是,如果您的“更新”按钮仅用于导航到编辑表单,则它可能只是一个链接 ( <a href="patientEdit.php?pid=YOUR_PATIENT_ID">)。$_GET['pid']然后,您改为读出patientEdit.php。另请参阅何时使用 POST 以及何时使用 GET?.

初始错误背后的原因是变量不会在单引号字符串中展开。考虑以下内容来证明:

<?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"

推荐阅读