我有以下代码行:
$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';
答案 0 :(得分:0)
<强>解决!强>
经过多次细节和痛苦之后,我发现了这个错误的来源。
我注意到它在我的实时网站环境中运行良好,但在开发中却没有。肯定是服务器出错了?但是没有 - 浏览器出现错误。
<link rel="icon" type="image/x-icon" href="" />
由于未能设置图标,但有空标签,Chrome和Firefox(但在我的情况下不是IE浏览器 - 在互联网上阅读每个浏览器的特性各不相同)浏览器加载页面两次寻找它。
对于任何留空的src=""
(例如图像标记上)属性,似乎也会这样做。
为什么回声会修复它?
到目前为止,这是此错误最奇怪的特征。我只能认为它是由于回声是在任何有效标记之外(在任何<html>
声明之前),因此浏览器以不同方式解析网页。
<强> $ _ POST 强>
混淆的最后一点是在发布请求期间没有发生这种情况,显然如果发送POST数据,Chrome不会尝试两次。