php - 这个代码为什么有时显示不出来刚才插入的内容?
高洛峰
高洛峰 2017-04-10 17:00:41
[PHP讨论组]

有时提交后能显示刚才插入的数据有时提交后显示不出来刚才插入的数据 等再插入一条时就把刚才没有显示的一块都显示出来了 我试了很多次 没有什么规律 这是什么原因呢 ajax的缓存还是什么?怎么解决呢?

提交页面

prepare("select id,txt from ajax");
$stmt->execute();
$res=$stmt->fetchall(PDO::FETCH_ASSOC);
foreach($res as $v)
{
    echo $v['txt'];
}
?>



    
    
    
    


插入页面

prepare("insert into ajax(txt)values(?)");
$stmt->execute(array($id));
?>
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(4)
大家讲道理

谢邀!
可能问题有两个
1、浏览器缓存,防止缓存的方式是window.location.reload(); 这一句改成location.href=当前页面的URL + "?" + (new Date).getTime()

2、是本地服务器,页面的延时约等于数据库更新的速度。
就是说,页面刷新时候的select执行的时候,insert的数据还不一定执行完。虽说是成功了,但是能select到还是有个延时的,虽然不大,但是页面刷新延时也不大,因此不一定会select到刚刚插入的数据。因此有时候会看到新插入的数据,有时候看不到。可以等个几秒钟再刷新。
测试的方法就是“插入页面”执行完insert之后,立即执行select看看输出什么。提交页面可以改为

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
<form action="ajaxinsert.php" method="get">
    <input type="text" id="id" name="id" />
    <button type="submit" id="btn1">提交</button>
</form>
</body>
</html>

P.S.

foreach($res as $v)
{
    echo $v['txt'];
}

严格来说,这个输出应该写在BODY里面

PHP中文网

哈哈,我也遇难到了

PHP中文网

是这个刷新当前页面的方法不对吗

黄舟

可以用节点调试一下,看看是哪里出了错误。可以用exit的方法来停止后续代码的执行来调试。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号