为什么这个页面加号跳转失败?

Why does this page fail to add numbers and redirect?

所以基本上我有另一个页面通过 GET 向这个页面发送信息。我仔细检查了 URL 以确保 GET 正常工作,确实如此。我不明白的是为什么这个脚本不会:

1) 将 1 添加到管理中的 NumberOfResponse table...

2) 重定向到页面(见代码底部)

现在通话状态更新为2,但没有任何反应,或者有回声。

代码

<?php
session_start();

include '../includes/connection.php';
include 'functions.php';
error_reporting(E_ALL);
ini_set('display_errors', 1);


$id = escape($_GET['id']);
$banner = escape($_GET['bannerID']);
$bannerName = escape($_GET['bannerN']);

$query = $handler->prepare("UPDATE Calls SET Status = '2', TakenBy = :bannerName WHERE ID=:id");
$query->bindParam(':bannerName', $bannerName);
$query->bindParam(':id', $id);
$query->execute();

$update = $handler->prepare("UPDATE Admins SET NumOfResponse + 1 WHERE ID = :banner");
$update->bindParam(':banner', $banner);
$update->execute();

header("Location: ../pages/incomingCalls.php");

因为您在 header 指令之前进行回显。 在打印任何内容之前,您必须先添加 header 值。删除回声或使用日志记录框架,例如 log4php。

我认为您不需要 select NumOfResponse 来更新它在第二个查询中的值。您可以通过执行单个更新查询来实现此目的。

你也在这里做了一些奇怪的事情:

$query = $query->fetchObject();

您不需要获取更新查询的结果。

另一个错误是:

$number = $query->NumOfResponse;

您实际上是在用另一个值覆盖已经增加的值 $number。

您可以像这样简化您的代码:

<?php
session_start();

include '../includes/connection.php';
include 'functions.php';

$id = escape($_GET['id']);
$banner = escape($_GET['bannerID']);
$bannerName = escape($_GET['bannerN']);

$query = $handler->prepare("UPDATE Calls SET Status = '2', TakenBy = :bannerName WHERE ID=:id");
$query->bindParam(':bannerName', $bannerName);
$query->bindParam(':id', $id);
$query->execute();

$update = $handler->prepare("UPDATE Admins SET NumOfResponse = NumOfResponse  + 1 WHERE ID = :banner");
$update->bindParam(':newNum', $newNum);
$update->bindParam(':banner', $banner);
$update->execute();

header("Location: ../pages/incomingCalls.php");