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>";
但是,如果您的“更新”按钮仅用于导航到编辑表单,则它可能只是一个链接 (<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"
【讨论】:
非常感谢,这很有帮助。我会看看您发布的链接,以便将来做得更好!以上是关于PHP更新记录按钮不将信息传递到另一个页面的主要内容,如果未能解决你的问题,请参考以下文章
将变量从一个表传递到另一个 PHP 页面中的另一个 [重复]