【发布时间】:2016-01-04 13:50:02
【问题描述】:
我有一个大问题!我开发了一个 PHP 脚本,它使用许多查询从 MySQL 数据库中插入、选择和删除值。我从来没有遇到过任何问题,直到现在。现在它开始显示昨天的数据。如果我通过 PHP 运行 INSERT 查询,它会显示真实数据,但如果我再次访问该页面或其他任何页面,它仍会显示昨天的数据。查询并不复杂,只是一些SELECT * FROM table 和简单的INSERT 查询。我认为某些东西使用缓存来运行查询。
我尝试了SQL_NO_CACHE,但结果相同。
返回昨天数据的简单代码示例。
$sql = "SELECT SQL_NO_CACHE * FROM persoane";
$query = mysqli_query($db_conx, $sql) or die(mysqli_error($db_conx));
会是什么?
稍后编辑:
我的一个页面上有这个脚本:
include_once("php_includes/check_login_status.php");
include_once("php_includes/db_conx.php");
include_once("php_includes/functii.php");
$sql = "SELECT * FROM persoane WHERE status='a' ORDER BY nume";
$query = mysqli_query($db_conx, $sql);
$data = date("d-m-Y");
if(isset($_POST['orainceput'])){
$persid = $_POST['prezpersid'];
$ora = $_POST['orainceput'];
$nota = $_POST['notaprez'];
$autor = $_SESSION['user'];
$psql = "INSERT INTO prezente (persoana_id, data, ora_inceput, autor, nota) VALUES ('$persid', NOW(), '$ora', '$autor', '$nota')";
$pquery = mysqli_query($db_conx, $psql);
}
如果设置了$_POST['orainceput'],并且在内部查询运行后,一切正常:它显示应该显示的内容。如果我刷新页面,它会再次显示缓存数据。我不明白!我从来没有遇到过这个问题!
【问题讨论】:
-
你验证过这些吗?例如。你检查过数据库有新记录吗?如果清除浏览器缓存会发生什么?
-
嗨!是的,数据在数据库中,如果我清除浏览器缓存,我会得到相同的结果。我不是在谈论浏览器缓存,原因很简单:我的客户打电话给我,告诉我这个问题,我去应用程序也看到了。我在考虑服务器端缓存。
-
您是否创建了一个能够重现行为的最小应用程序?
-
是的,我有。结果相同。但是我设法解决了它,看来这是托管服务器的问题。正如我所说,它从 SQL 缓存返回数据。
-
那么当您验证数据库时为什么没有看到缓存的结果?