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

Posted

技术标签:

【中文标题】PHP更新记录按钮不将信息传递到另一个页面【英文标题】:PHP update record button not passing information to another page 【发布时间】:2021-03-11 16:14:06 【问题描述】:

我试图在 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);
        ?>

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

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

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

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

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

而且,什么也没发生。

如果需要更多信息,我们将不胜感激。

【问题讨论】:

这是您正在执行的实际代码吗?如果是这样, $row[patientID] 将按原样打印,请尝试使用 " instead ',并用引文包装 patientID,或者只需删除引文之外的 $row[patientID] 并将其添加到字符串中,如果它仍然不工作,尝试在此处发布输出 html,因此我无法检查,最后我认为您这样做很辛苦,您在这里不需要表格,您没有发布任何实际数据,而是 id 显示单个行,您可以改用链接。 @Bahaa 谢谢,使用你的答案和来自 Ro 的答案,我设法让它工作。 @Dharman 感谢您提供的信息,我会查看您的链接并使用它们来改进我的代码。 【参考方案1】:

改变这个:

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

但是,如果您的“更新”按钮仅用于导航到编辑表单,则它可能只是一个链接 (&lt;a href="patientEdit.php?pid=YOUR_PATIENT_ID"&gt;)。然后,您改为在 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"

【讨论】:

非常感谢,这很有帮助。我会看看您发布的链接,以便将来做得更好!

以上是关于PHP更新记录按钮不将信息传递到另一个页面的主要内容,如果未能解决你的问题,请参考以下文章

将下拉列表中的值从一个 php 传递到另一个

将变量从一个表传递到另一个 PHP 页面中的另一个 [重复]

将参数传递到另一个网页

如何使用会话将值从一个php页面传递到另一个页面

用于将行复制并粘贴到另一个工作表而不将其粘贴到页面数英里的宏

使用 PHP 获取从一个页面传递到另一个页面的变量