我知道您可以使用 if(isset($_GET['id'])){ 获取 URL 参数 $id = $_GET['id'];这非常有效,如果我然后关闭该“if”语句并在同一页面上为更新/追加条目表单创建一个新的语句(它是每个索引数据库条目的显示页面),我将无法获取id 已传递到下一个 if 语句中的 URL。
这是一个 if 语句,它向我的子表(“条件”)提交一个新行(“条件”),该子表有一个外键,将其连接到健康提供者的父表(显示页面获取提供者的id 从搜索引擎选择并显示他们的信息,然后如果有人想要添加由该医生治疗的新健康状况,则在底部有此“附加条目”表单。)
如果我直接在我的 PHP 中给它正确的 id 号($id = 56),一切都会正常,但如果我尝试从第二个 if 语句中的 URL 获取它($id = $_GET['id') ];)。
if (isset($_GET['providerid']))
{
$providerid = $_GET['providerid']; /*THIS WORKS GREAT*/
$sql = "SELECT *, GROUP_CONCAT(DISTINCT conditions.condition_name
SEPARATOR ', ') AS all_conditions FROM `providers` INNER JOIN
`conditions` ON `providers`.`id` = `conditions`.`prov_id` WHERE
`prov_id`= $providerid";
$data = mysqli_query($connection, $sql) or die('error');
if(mysqli_num_rows($data) > 0){
$numresults = mysqli_num_rows($data);
while($row = mysqli_fetch_assoc($data)){
$providerid = $row['id'];
$providerfirstname = $row['provider_first_name'];
/*etc....*/
$conditions = $row['all_conditions'];
/*table displays provider info:*/
echo "<br><h1>".$providerfirstname." ".$providerlastname."
</h1>";
echo '<TABLE id="myTable" width="350px" border="1">';
//etc....(cutting out details)
echo '<tr><td><div id="myTable"><a href="#" id="addNew">Add+ .
</a></div></td><td><b>Conditions Treated:</b></td> .
<td>'.$conditions.'</td></tr>';
/*If user wants to add a new condition treated by provider that's
not listed:*/
echo '<tr><td></td><td>Add a new condition:</td><td><form
action="profilebackup.php" method="POST"><input type="text"
size="40" name="newcond" value="" placeholder="Add a Condition" /> .
<input type="submit" name="add1" value="Add"><br></td></tr>';
}
echo '</TABLE>';
}
else {
echo "0 results";
}
}
/*sends added conditions to child table, EVERYTHING WORKS EXCEPT
GETTING ID (WHICH WORKED ABOVE):*/
if(isset($_POST['add1'])){
$providerid = $_GET['providerid'];
$condition = mysqli_real_escape_string($connection,
$_POST['condition']);
$insql = "INSERT INTO `conditions` (condition_name, prov_id) VALUES
('$condition','$providerid')";
if(mysqli_query($connection, $insql)){
echo "Thank you! Your provider has successfully been submitted
to the database!";
}
else {
echo "Sorry, there was an problem submitting your provider to
the database." . $insql . mysqli_error($connection);
}
}
除了第二个 if 语句中的 GET 函数外,一切正常。它返回错误代码,表明它没有正确的外键约束:“无法添加或更新子行:外键约束失败”,因为它没有获取 id。
最佳答案
您正在通过 post
向 profilebackup.php 提交表单,但此表单的处理程序正在尝试获取
providerid 。如果您希望能够通过 $_GET
访问它,则需要在表单操作中将providerid作为查询字符串发送。
<form method="post" action="profilebackup.php?providerid=<?php echo $providerid; ?>" ...
执行此操作的正确方法是在表单中包含隐藏输入,然后通过$_POST
一致地访问它。
<form method="post" action="profilebackup.php">
<input type="hidden" name="providerid" value="<?php echo $providerid; ?>">
...
</form>
以及处理程序代码。
<?php
...
// Notice that now you can use $_POST consistently.
if (isset($_POST['add1'])) {
$providerid = $_POST['providerid'];
...
关于php - 如何在 if(isset) 语句中使用 PHP 获取 URL 参数以更新表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56910859/