PHP在页面刷新之前不会检索新数据
发生的事情是,我认为我的代码是先选择数据(基本上是旧数据),然后更新它,但我希望它更新,然后选择数据(新数据)。我该怎么做 我将发布出错的地方,如果您需要完整的代码,请询问:PHP在页面刷新之前不会检索新数据,php,html,mysql,arrays,Php,Html,Mysql,Arrays,发生的事情是,我认为我的代码是先选择数据(基本上是旧数据),然后更新它,但我希望它更新,然后选择数据(新数据)。我该怎么做 我将发布出错的地方,如果您需要完整的代码,请询问: $select_links = $db->query("SELECT pid, added_by,link_title,lid,link_order FROM " . TABLE_PREFIX . "homepage_links WHERE pid='$pid' ORDER BY
$select_links = $db->query("SELECT pid, added_by,link_title,lid,link_order FROM " . TABLE_PREFIX . "homepage_links WHERE pid='$pid'
ORDER BY link_order DESC LIMIT $start,$show");
$check_link_count_rows = $db->num_rows($select_links);
echo "<b> You Current Have " . $check_link_count_rows . " Links On Your Page: </b><br>";
echo "<form action='' method='POST'>
";
while($select_links_array = $db->fetch_array($select_links)) {
$link_title_display = $select_links_array['link_title'];
$link_id_display = $select_links_array['lid'];
if(!$mybb->input["order_edit_$link_id_display"]) {
$link_order_display = $select_links_array['link_order'];
} else {
$link_order_display = $mybb->input["order_edit_$link_id_display"];
}
$order_edit_value1 = $mybb->input["order_edit_$link_id_display"];
$order_edit_value = $db->escape_string($order_edit_value1);
echo "<br>" . $link_title_display . " <a href='?operation=edit_links&link=$link_id_display'> (edit) </a>
<input type='number' name='order_edit_$link_id_display' value='$link_order_display' style='width:40px;'>
<input type='hidden' name='get_link_id_display_value_$link_id_display' value='$link_id_display'><br>
";
$get_link_id_display_value1 = $mybb->input["get_link_id_display_value_$link_id_display"];
$get_link_id_display_value = $db->escape_string($get_link_id_display_value1);
$update_quick_edit_query = $db->query("UPDATE spud_homepage_links SET link_order='$order_edit_value'
WHERE lid='$get_link_id_display_value'");
}
$select\u links=$db->query(“选择pid,添加人,链接标题,lid,链接顺序自”。表前缀。“主页链接,其中pid='$pid'
按链接订购(订单描述限额$start,$show”);
$check\u link\u count\u rows=$db->num\u rows($select\u links);
回应“你现在有”$检查链接行数。“页面上的链接:
”;
回声“
";
而($select\u links\u array=$db->fetch\u array($select\u links)){
$link_title_display=$select_links_array['link_title'];
$link_id_display=$select_links_array['lid'];
如果(!$mybb->input[“订单编辑\链接\标识\显示”]){
$link\u order\u display=$select\u links\u array['link\u order'];
}否则{
$link_order_display=$mybb->input[“order_edit_$link_id_display”];
}
$order_edit_value1=$mybb->input[“order_edit_$link_id_display”];
$order\u edit\u value=$db->escape\u字符串($order\u edit\u value1);
回显“
”$link\u title\u display。“
";
$get_link_id_display_value 1=$mybb->input[“get_link_id_display_value_$link_id_display”];
$get\u link\u id\u display\u value=$db->escape\u string($get\u link\u id\u display\u value1);
$update\u quick\u edit\u query=$db->query(“更新spud\u主页\u链接集链接\u顺序='$order\u edit\u值”
其中lid=“$get\u link\u id\u display\u value'”;
}
我找不到解决方案,因为除了这个bug之外,所有东西都在正确的位置,可以正常工作。在评论中讨论后,我确定您试图在提交修改数据库的
post
表单后呈现页面。完全可以重新读取新的数据库状态并在post操作中呈现它,但这是不可取的,因为浏览器无法在不询问您是否希望再次运行该操作的情况下刷新页面。这不利于获得良好的用户体验,尤其是在使用后退/前进按钮时
这种行为的原因是post操作通常会修改数据库。例如,在购买信用卡或修改个人资料时,服务器状态可能会发生一些变化。因此,在写操作之后,执行到服务器的新往返是一种好的做法,将页面方法从post
更改为get
我链接到的
header()
调用将完成此操作,并将解决您的渲染问题。看起来您的更新已经结束。你试过在读取数据的SELECT
之前移动那部分逻辑吗?是的,这就是我试图做的,但是因为我在while循环中循环字段,然后获取更新的值,我不能,这使事情变得复杂,因为你甚至不能在while循环值和输入post字段之前进行操作:/回答!希望解决这个问题,如果需要第一个选择
来设置更新
的数据,那么在渲染屏幕之前,只需在最后运行另一个选择
。您是否正在对表单提交进行更新?它的目的是什么?选择的目的是它也会获取数据,我可以试着看看结果如何:)但可能会影响显示方式,但感谢您的帮助和建议:)完成:)再次加载感谢!