为什么这个页面加号跳转失败?
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");
所以基本上我有另一个页面通过 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");