Php MySQL更新将值更改为';0';而不是使用bind_param时提供的整数

Php MySQL更新将值更改为';0';而不是使用bind_param时提供的整数,php,mysqli,Php,Mysqli,我尝试使用AJAX更新MySQL数据库中的表'forminfo',通过GET调用php脚本并提供一个id(整数值)。但是,例如,当我调用changeRequestedQ.php?id=4时,表单元格将更新为0,而不是4 列“requestedQ”的格式为INT(11)。当我尝试手动更新$id=4时,它起作用,表格单元格被更新为4 require_once("msqli_config.php"); $id = $_GET['id']; // doesn't work, table cell up

我尝试使用AJAX更新MySQL数据库中的表'forminfo',通过GET调用php脚本并提供一个id(整数值)。但是,例如,当我调用changeRequestedQ.php?id=4时,表单元格将更新为0,而不是4

列“requestedQ”的格式为INT(11)。当我尝试手动更新
$id=4
时,它起作用,表格单元格被更新为4

require_once("msqli_config.php");

$id = $_GET['id']; // doesn't work, table cell updates to 0, whatever integer value I pass through file.php?id=<int>
$id = (int)$_GET['id']; // no change in outcome
$id = 4; // works, table cell updates to 4

try {
    $stmt1 = $mysqli->prepare("UPDATE forminfo SET requestedQ = ? WHERE id = 1;");
    $stmt1->bind_param("i", $id);
    $stmt1->execute();
    $stmt1->close();
} catch (Exception $e) {
    error_log($e);
    exit();
}

$mysqli->close();
更新
出于绝望,由于我无法理解前面提到的代码之间的结果差异,我尝试了是否这可能是一个特定的浏览器问题。事实证明,上面的代码在MSEdge中很有魅力,在谷歌Chrome的匿名模式中也是如此,只是在正常会话中没有。这怎么可能?这与缓存有关吗?我在开发人员工具中禁用了缓存,但这没有帮助…

我已经解决了我的问题。我认为这是一个PHP/MySQL的东西,我从来没有研究过我的浏览器行为,也没有研究过请求和响应参数。我的坏


结果表明,在原始请求完成加载后,Chrome浏览器插件向同一目标发送了第二个空GET请求(因此没有查询字符串)。定义了oud
$\u GET['id']
后,表格单元格将更新为0。删除了插件,一切正常。

您是否尝试转储您的
$\u GET
?是的,它将返回
array(1){[“id”]=>string(1)“4”}
如预期的那样您是否可以尝试
$stmt1=$mysqli->prepare(“更新forminfo SET requestedQ=“.id.”其中id=1;”)//$stmt1->bind_参数(“i”,$id)
只是为了排除绑定的问题。@user3783243尝试了这个,没有改变,所以它肯定是带有
$id
变量的。赋值、变量转储和查询执行之间是否存在代码<代码>$id被重新分配给字符串是我唯一能看到的东西。在这种情况下,一个好主意是将整个东西包装在
如果(!empty($\u GET['id']){
那么它只会在你有
id
@user3783243我添加了
如果(!isset($\u GET['id'])退出(“没有提供id”)时执行
,这确实是一种很好的做法。
$sql = "UPDATE forminfo SET requestedQ = '4' WHERE id = 1";
$mysqli->query($sql); // updates to 4
echo $sql; // UPDATE forminfo SET requestedQ = '4' WHERE id = 1

$sql = "UPDATE forminfo SET requestedQ = 4 WHERE id = 1";
$mysqli->query($sql); // updates to 4
echo $sql; // UPDATE forminfo SET requestedQ = 4 WHERE id = 1

$sql = "UPDATE forminfo SET requestedQ = '" . $id . "' WHERE id = 1";
$mysqli->query($sql); // updates to 0
echo $sql; // UPDATE forminfo SET requestedQ = '4' WHERE id = 1

$sql = "UPDATE forminfo SET requestedQ = " . $id . " WHERE id = 1";
$mysqli->query($sql); // updates to 0
echo $sql; // UPDATE forminfo SET requestedQ = 4 WHERE id = 1