MySQL增加2,除非我回显变量,在这种情况下它只添加1

时间:2014-09-03 14:25:05

标签: php mysql

请原谅可怕的头衔!

我有以下代码行:

$this->sql->mysqli->query(
    "UPDATE `threads` SET `views` = `views` + 1
    WHERE `id` = '".$this->thread['id']."'
");

人们会期望这会给视图添加+ 1吗?嗯,它没有。它增加了2个!

这不是任何类型的循环或任何东西。

无论如何,我试着解决它..

$views = $this->thread['views']++;      
$this->sql->mysqli->query(
    "UPDATE `threads` SET `views` = '".$views."'
    WHERE `id` = '".$this->thread['id']."'"
);

再次没有运气,它仍然加2!

尝试进一步调试......

$views = $this->thread['views']++;      
$this->sql->mysqli->query(
    "UPDATE `threads` SET `views` = '".$views."'
    WHERE `id` = '".$this->thread['id']."'"
);
echo $views;

使用上面的代码,$views回应它应该做什么,行确切地更新它应该如何!回声使它工作,我不知道为什么,我不想要回声。

不能解决这个问题,我觉得有人正在小便。

此致

MIC

编辑:事实证明,在上面的版本1之下回复的内容并不重要,它使它工作,但不是没有回声

编辑以响应brian和额外澄清:

以下代码使views添加TWICE。 (即增加2)

$this->sql->mysqli->query(
    "UPDATE `threads` SET `views` = `views` + 1
    WHERE `id` = '".$this->thread['id']."'"
);

以下代码......

$this->sql->mysqli->query(
    "UPDATE `threads` SET `views` = `views` + 1
    WHERE `id` = '".$this->thread['id']."'"
);
echo 'foo';
  • echos' foo' ONCE和
  • 为视图添加1(即正常工作)

1 个答案:

答案 0 :(得分:0)

<强>解决!

经过多次细节和痛苦之后,我发现了这个错误的来源。

我注意到它在我的实时网站环境中运行良好,但在开发中却没有。肯定是服务器出错了?但是没有 - 浏览器出现错误。

<link rel="icon" type="image/x-icon" href="" />

由于未能设置图标,但有空标签,Chrome和Firefox(但在我的情况下不是IE浏览器 - 在互联网上阅读每个浏览器的特性各不相同)浏览器加载页面两次寻找它。

对于任何留空的src=""(例如图像标记上)属性,似乎也会这样做。

为什么回声会修复它?

到目前为止,这是此错误最奇怪的特征。我只能认为它是由于回声是在任何有效标记之外(在任何<html>声明之前),因此浏览器以不同方式解析网页。

<强> $ _ POST

混淆的最后一点是在发布请求期间没有发生这种情况,显然如果发送POST数据,Chrome不会尝试两次。