我有一个页面可以执行以下操作:
在Firefox,Safari和Chrome中,此操作每次都可以正常运行。 在IE9中,它第一次工作,可能是2次甚至3次,然后它会做一些奇怪的事情 - 它回应受影响的行“0” - 即使查询执行得很好(数据库已更新)。
我认为这是某种缓存问题,因为当我在步骤1(提交表单)之前清除IE中的浏览器缓存时,它会根据需要每次都有效。
我尝试过使用此代码:
header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1.
header('Pragma: no-cache'); // HTTP 1.0.
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
这是<head>
标记:
<meta http-equiv="Cache-Control" content="no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="Mon, 26 Jul 1997 05:00:00 GMT" />
发生了什么事?我怎么能阻止IE这样播放?
更新
似乎与PHP PDO的rowCount()(用于获取受影响的行)存在某种不一致...在我的情况下,我无法想象如何,但不一致性与浏览器缓存相关联。执行查询后,我执行SELECT以确定是否使用新的val更新了字段,而不是使用rowCount()。这似乎始终如一。
答案 0 :(得分:0)
执行查询后,不要使用PDO的rowCount(),而是执行SELECT查询以确定是否使用新的val更新了字段。
伪代码/ SQL: