wordpress 数据库明明更新成功了,但执行查询操作时,数据还是会变回更新之前,为什么?

时间:2023年09月22日

/

来源:网络

/

编辑:佚名

这种情况通常是由于WordPress中使用了缓存机制所导致的。当您在WordPress中执行更新操作时,$wpdb对象会将数据存储到内存中,并在下一次查询相同的数据时,优先从内存中获取数据,而不是从数据库中获取数据。这种缓存机制可以提高查询性能,但也可能导致数据在更新后不立即生效的问题。
要解决这个问题,您可以在更新数据后强制刷新$wpdb对象的缓存,以确保下一次查询会从数据库中获取最新的数据。在WordPress中,可以使用flush()方法来实现这一点。下面是一个示例:
<?php
// 引入WordPress的核心文件
require_once( dirname( __FILE__ ) . '/wp-load.php' );
// 更新数据
global $wpdb;
$table_name = $wpdb->prefix . 'my_table'; // 获取表名
$data = array(
    'name' => 'John',
    'email' => 'john@example.com'
);
$where = array( 'id' => 1 );
$wpdb->update( $table_name, $data, $where );
// 刷新缓存
$wpdb->flush();
// 查询数据
$results = $wpdb->get_results( "SELECT * FROM $table_name WHERE id = 1" );
// 输出查询结果
if ( $results ) {
    $row = $results[0];
    echo $row->name . ': ' . $row->email;
} else {
    echo 'No results found';
}
在这个示例中,我们在更新数据后调用了$wpdb对象的flush()方法,以强制刷新缓存。然后,我们再次执行查询操作,并输出查询结果。现在,您应该能够看到最新的更新数据了。
请注意,刷新缓存可能会对性能产生一定的影响,因为它会强制$wpdb对象从数据库中获取最新的数据。如果您的查询操作比较频繁,并且对性能有较高的要求,建议使用WordPress提供的缓存机制,以减少对数据库的访问次数。
猜你需要

豫ICP备2021026617号-1  豫公网安备:41172602000185   Copyright © 2021-2028 www.78moban.com/ All Rights Reserved

本站作品均来自互联网,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。如有侵犯您的版权,请联系 1565229909#qq.com(把#改成@),我们将立即处理。