PHP或MySQL缓存查询
我有个大问题!我开发了一个PHP脚本,它使用许多查询从MySQL数据库中插入、选择和删除值。到现在为止,我从来没有遇到过任何问题。现在它开始显示昨天的数据。如果我通过PHP运行INSERT查询,它会显示真实的数据,但如果我再次转到该页面或任何其他页面,它仍然会显示昨天的数据。查询并不复杂,只是一些PHP或MySQL缓存查询,php,sql,caching,Php,Sql,Caching,我有个大问题!我开发了一个PHP脚本,它使用许多查询从MySQL数据库中插入、选择和删除值。到现在为止,我从来没有遇到过任何问题。现在它开始显示昨天的数据。如果我通过PHP运行INSERT查询,它会显示真实的数据,但如果我再次转到该页面或任何其他页面,它仍然会显示昨天的数据。查询并不复杂,只是一些SELECT*fromtable和简单的INSERT查询。我认为有些东西使用缓存来运行查询 我尝试了SQL\u NO\u缓存,但结果相同 返回昨天数据的简单代码示例 $sql = "SELECT SQL
SELECT*fromtable
和简单的INSERT
查询。我认为有些东西使用缓存来运行查询
我尝试了SQL\u NO\u缓存
,但结果相同
返回昨天数据的简单代码示例
$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);
}
如果设置了
$\u POST['orainceput']
,并且在运行内部查询后,一切正常:它显示了应该显示的内容。如果刷新页面,它将再次显示缓存的数据。我不明白!我从来没有这个问题 我怀疑它是浏览器缓存。正确/错误行为之间的一个显著区别是GET与POST请求。其中:
- HTTP POST请求不可缓存;及
- HTTP GET是可缓存的
除此之外,我还将检查web服务器配置,以确保向客户端发送哪些额外的HTTP头,以及是否存在与缓存相关的头。由于HTTP协议本身是无状态的,并且每次加载页面时都会启动一个新的PHP线程,因此它不会缓存任何用户数据,除非您告诉它这样做(例如:将查询结果写入/读取到数据访问层中的文件中)。MySQL可以缓存查询结果,但当相关表接受任何更改表的CRUD/DML操作时,查询缓存项会自动清除 从MySQL文档: 如果表发生更改,则使用该表的所有缓存查询都将无效并从缓存中删除。这包括使用映射到已更改表的合并表的查询。表可以由多种类型的语句更改,例如INSERT、UPDATE、DELETE、TRUNCATE table、ALTER table、DROP table或DROP DATABASE 缓存应该位于应用程序和浏览器之间:浏览器本身、代理等,或者在应用程序中实现。检查应用程序及其运行环境 进一步参考
- 有关MySQL缓存的更多信息:
- 有关HTTP缓存的详细信息: