在WordPress中,我有一个自定义表,我想在其中存储插件中使用的设置。插件管理页面的代码包含一个表单,在显示表单之前,我访问数据库并检索当前项目。
问题是,当我单击更新时,数据库将使用我输入的新项进行更新,并存储在数据库中,但当我再次访问该表时,它将显示最后一组数据。第一次就可以了。如果我点击提交按钮,第二次数据正常。
我很困惑为什么它没有显示修改后的数据。我尝试过刷新,清除缓存。不知道为什么。
基本的代码流如下
通过get\\u results()或get\\u row()从wordpress自定义表中检索数据,通过$row->XXXX或foreach($rows as$data)将数据解析为变量,检查是否设置了表单输入字段,如果设置了,请在单击提交时通过POST更新表刷新文件并转到项目1以检索数据问题是,如果我第一次点击提交按钮两次,这会起作用。然后正确显示数据。但第一次单击提交按钮时,在使用不同的数据修改输入字段后,它会将数据存储在表中,但在刷新过程中(#1),它不会检索表中的数据。它以前保存数据。我已尝试清除缓存
非常困惑。。
代码:
global $wpdb;
$Table_Name = $wpdb->prefix.\'member_subscriptions\';
$sql_query = $wpdb->prepare("SELECT * FROM $Table_Name", 1) ;
$rows = $wpdb->get_results($sql_query, ARRAY_A);
if (!empty($rows))
{
foreach ($rows as $data)
{
$mmd_pms_not_logged_in_URL = $data[\'notloggedin_url\'] ;
}
<div class="wrap">
<form method="POST">
Not Logged In<input type="text" size="75" name="MMD_NotLoggedIn" value="<?php echo esc_html($mmd_pms_not_logged_in_URL); ?>"/>
<input type="submit" value="Update" class="button-primary"/>
</form>
</div>
<?php
if ( isset( $_POST[\'MMD_NotLoggedIn\'] ) )
{
$mmd_pms_not_logged_in_URL= sanitize_text_field( $_POST[\'MMD_NotLoggedIn\'] );
$sql_query = $wpdb->prepare("UPDATE $Table_Name SET notloggedin_url=%s WHERE id=1", $mmd_pms_not_logged_in_URL) ;
$wpdb->query( $sql_query );
}
?>