Php 如何将字符串与变量连接起来以动态设置标头位置?

Php 如何将字符串与变量连接起来以动态设置标头位置?,php,mysql,Php,Mysql,我在一个类中编写了一个函数,用于更新MySQL数据库中的一个简单产品表,到目前为止,该函数运行良好 但是,成功更新后,我希望标题位置动态重定向到每个项目的相应编辑页面,例如edit.php?id=5。使用下面的代码,url和$id变量没有成功连接。我在浏览器中得到的只是…/edit.php?id= 我怎样才能做到这一点呢?对我来说,用字符串连接看起来是正确的 您确定您的数据库记录已正确更新吗? 如果将正确的$id传递给此方法,则它应该存在于重定向头中 我建议您重现在新位置没有$id值的情况,并进

我在一个类中编写了一个函数,用于更新MySQL数据库中的一个简单产品表,到目前为止,该函数运行良好

但是,成功更新后,我希望标题位置动态重定向到每个项目的相应编辑页面,例如edit.php?id=5。使用下面的代码,url和$id变量没有成功连接。我在浏览器中得到的只是…/edit.php?id=


我怎样才能做到这一点呢?

对我来说,用字符串连接看起来是正确的

您确定您的数据库记录已正确更新吗? 如果将正确的$id传递给此方法,则它应该存在于重定向头中

我建议您重现在新位置没有$id值的情况,并进行一些调试,例如:

public function .....
    echo "The ID is " . $id;

    // the update code here

    if($result){
        echo 'location:edit.php?id=' . $id; 
        exit; 
        header('location:edit.php?id=' . $id);  
    }

    die('result not valid');
检查打印的$id值是否相同,是否为预期值,以及记录是否确实已更新。您不应该看到字符串“result not valid”,因为之前的代码已退出

这不是测试的最佳实践,但应该帮助您了解正在发生的事情

干杯

附言。
当你说“我在浏览器中得到的只是”时,你的意思是你被重定向到了那个页面,对吗

最终的解决方案是在方法中再次定义$id,如下所示:

public function update($id,$category_id,$name,$description,$price,$image){

        $query="UPDATE $this->db_table SET id='$id', category_id='$category_id', name='$name', description='$description', price
        ='$price', image='$image' WHERE id='$id'";

        $result= $this->Database->query($query) or die(mysqli_connect_errno()."Data cannot be inserted.");

        $id = $_REQUEST['id'];

        if($result) {

            header('location:edit.php?id=' . $id);  
        }
    }

您确定在方法开头的变量$id中有一些值吗?之后是重定向到其他地方还是多次调用该函数?退出;在你的头呼叫之后,将排除这种情况。我没有使用其他重定向。在使用MySqli时,我刚刚定义了$id=$this->Database->insert_id;,这会将浏览器重定向到edit.php?id=0,即$id变量尚未设置。我不明白,您正在进行更新,而不是插入,因此该id怎么可能还不存在?除此之外,它是函数中的一个参数。变量来自一个编辑表单,例如,当调用edit.php?id=1时,该表单使用不同的读取函数显示当前的值。因此,这些值应该在适当的位置。
public function update($id,$category_id,$name,$description,$price,$image){

        $query="UPDATE $this->db_table SET id='$id', category_id='$category_id', name='$name', description='$description', price
        ='$price', image='$image' WHERE id='$id'";

        $result= $this->Database->query($query) or die(mysqli_connect_errno()."Data cannot be inserted.");

        $id = $_REQUEST['id'];

        if($result) {

            header('location:edit.php?id=' . $id);  
        }
    }