Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP PDO查询赢得';由于标头重定向,无法工作_Php_Oop_Pdo - Fatal编程技术网

PHP PDO查询赢得';由于标头重定向,无法工作

PHP PDO查询赢得';由于标头重定向,无法工作,php,oop,pdo,Php,Oop,Pdo,我有两个问题,一个函数应该向数据库字段添加+1,并在完成后重定向到目标URL 问题是,除非清除缓存,否则更新查询无法工作。在试图找出为什么会发生这种情况时,我遇到了另一个奇怪的问题,即在我更改函数后,它不会更新函数 我所做的是尝试注释标题,它仍在重定向我,直到清除缓存。另一方面,当标题被注释并且在我清除缓存后,我的更新功能每次都工作 public function clickShortlink($slug) { $connect = $this->connect()

我有两个问题,一个函数应该向数据库字段添加+1,并在完成后重定向到目标URL

问题是,除非清除缓存,否则更新查询无法工作。在试图找出为什么会发生这种情况时,我遇到了另一个奇怪的问题,即在我更改函数后,它不会更新函数

我所做的是尝试注释
标题
,它仍在重定向我,直到清除缓存。另一方面,当
标题
被注释并且在我清除缓存后,我的更新功能每次都工作

    public function clickShortlink($slug) {
        $connect = $this->connect();

        $stmt = $connect->prepare("UPDATE `shortlink` SET clicks = clicks + 1 WHERE slug = :slug;");
        $stmt->bindValue(":slug", $slug);
        $stmt->execute();

        $stmt = $connect->prepare("SELECT target FROM `shortlink` WHERE slug = :slug");
        $stmt->bindValue(":slug", $slug);
        $stmt->execute();
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            $target = $row['target'];
        }

        if (isset($target)) {
            $connect = null;
            header("Location: ".$target);
            exit;
        }

        $connect = null;
    }
关于
标题
,我缺少什么

编辑

这就是我如何调用
clickShortLink()




走向目标
就像@Mr Glass在评论中发现的那样,这个问题与我的
.htaccess
中的一个代码有关

<IfModule mod_headers.c>
Header set Connection keep-alive
Header set Cache-Control "max-age=1209600, must-revalidate"
</IfModule>

标题集连接保持活动状态
标题集缓存控制“最大年龄=1209600,必须重新验证”

不幸的是,添加“no cache”元标记没有帮助,但是在从我的
.htaccess
文件中删除此代码后,一切似乎都正常

上述代码中没有任何内容会导致此问题。关于
header()
需要注意的一点是,它要求在发送头之前没有DOM输出。如何调用
clickShortLink()
,在此之前是否有任何输出?请注意,您可能还希望将
if(isset($target)
逻辑包装在针对查询的检查中,例如
if($stmt->execute())
…如果您遇到与缓存相关的问题,这可能会有所帮助:@obdimanage编辑了这个问题,并注意到了附加的
如果
@Mr Glass这没有帮助。不幸的是,PHP还能进入浏览器缓存吗?如果清除缓存后代码仍然有效,那么代码就可以工作。您的问题是浏览器缓存了您的页面。如果您在未访问此页面的浏览器中尝试代码,并且代码正常,则您知道代码正常工作(并且需要解决缓存问题)。如果无法通过此设置,则始终可以将所需URL作为javascript变量传递,让javascript检查
location.href
=
yourURL
,如果未设置
location.href=yourURL
<IfModule mod_headers.c>
Header set Connection keep-alive
Header set Cache-Control "max-age=1209600, must-revalidate"
</IfModule>