Php 使用GET访问URL中的数据,并使用POST将其发送到数据库

Php 使用GET访问URL中的数据,并使用POST将其发送到数据库,php,html,forms,http,Php,Html,Forms,Http,我正在使用url发送一个id。但是,我只能在页面加载时访问$GET['id']变量。当我继续提交表单时,变量是未定义的。有什么问题吗 if(isset($_GET['id'])) { $tripId = htmlspecialchars($_GET['id']); } if (isset($_POST['submit'])) { for($i = 0; $i < count($_POST['pack

我正在使用url发送一个id。但是,我只能在页面加载时访问$GET['id']变量。当我继续提交表单时,变量是未定义的。有什么问题吗

   if(isset($_GET['id'])) {
        $tripId = htmlspecialchars($_GET['id']);
    }
    
    
    if (isset($_POST['submit'])) {
   
    
        for($i = 0; $i < count($_POST['package']); $i++) {
    
    
            //check if there are any errors before proceeding
            if(array_filter($errors)) {
                print_r($errors);
            } else {
                $package = mysqli_real_escape_string($con, $_POST['package'][$i]);
                $price = mysqli_real_escape_string($con, $_POST['price'][$i]);
                $sql = "INSERT INTO packages(tripId,packageName,packagePrice) VALUES('$tripId','$package','$price')";
            }
    
            //check and redirect 
            if(mysqli_query($con, $sql)) {
                header('location: admin_home.php');
            } else {
                echo 'error' . mysqli_error($con);
            }
         
        }
    
    }
if(isset($\u GET['id'])){
$tripId=htmlspecialchars($_GET['id']);
}
如果(isset($_POST['submit'])){
对于($i=0;$i
构建表单时,目标也应该包括GET参数。这就是GET参数的传递方式
$\u POST
将填充表单字段,
$\u GET
将填充url中的任何内容

<?php 

$url = '/process.php?' . http_build_query(['id' => $yourIdHere]);

?>

<form action="<?=$url;?>" method="POST">
  <label for="package">Package:</label>
  <input type="text" id="package" name="package"><br><br>
  <label for="price">Price:</label>
  <input type="text" id="price" name="price"><br><br>
  <input type="submit" value="Submit" name="submit">
</form> 


那么提供给表单
action
的URL可能不会传递GET变量。如果您在提交带有POST的表单,那么$\u GET数组不会被填充。是否可以获取'id'变量并将其保存到POST请求中?@Mitya it,我可以在页面加载后立即访问该变量,但当我提交表格时,它是undefined@AlexGoonerArteta是的,如果您a)将其放在表单“action”方法的URL中,或者b)将其放在表单中的隐藏字段中(但在该场景中,您必须通过$\u POST在PHP中访问它)。无论哪种方式,尽管这意味着在发送POST请求时它会再次提交。为了清楚起见,最好说表单的操作,而不是它的目标(这是一个不同的属性,尽管我知道你的意思。)@Mitya是的,对不起。那将是理想的。我只是发现当我教人的时候,学生们把它描述为目标的时候,就不会那么困惑了。虽然我通常会说“动作参数中的目标”,但我猜我今天晚上很懒。