按当前用户登录查询特定表行

时间:2019-10-26 作者:Yuan Lim

我正在Wordpress中创建一个基于用户的网站,每个用户都可以创建一个帐户并将其记录的数据上传到网站。但我很难思考用户如何查看向用户显示相关数据的数据库表。

这是一个高尔夫网站,用户可以在这里进行练习,使用什么设备以及何时进行练习。

我试图从数据库表中查询特定于当前登录用户的数据。将有一个名为“exercise\\u record”的表,每个WP用户都可以查看自己的练习记录。e

global $wpdb;
$table_name = $wpdb ->prefix. \'exercise_record\';

$current_user = wp_get_current_user(); // Getting current user logged in.
$user_id      = $current_user->ID;     // Get user ID to use in meta function.

$rows = $wpdb->get_results(
  "SELECT *
  FROM $table_name\' 
  WHERE user =  %d", $user_id 
);

foreach  ($rows as $row) 
{
  $row->, \'exercise_record\'
}

1 个回复
SO网友:Hector

欢迎

WordPress已经有一个用户表。此外,还有另一个名为usermeta 这将允许您为用户保存额外信息。

有一些函数允许开发人员从userusermeta 不使用自定义数据库查询的表。

解决方案:如问题中所述,用户应该只查看自己的数据。因此,我们可以认为用户已登录到该站点。

要获取当前用户,请使用wp_get_current_user 功能。剩下的事情将使用用户meta完成。根据数据更新用户元,并将其保存在usermeta 桌子只要你想展示它,就可以得到它。

$current_user = wp_get_current_user(); // Getting current user logged in.
$user_id      = $current_user->ID;     // Get user ID to use in meta function.

// Custom html markups

// Show user name using first name and last name.
echo \'User name: \' . $current_user->user_firstname . \' \' . $current_user->user_lastname . \'<br>\';

// Show extra information.
echo get_user_meta( $user_id, \'prefix_user_exercise\', true ) . \'<br>\';

并考虑获取prefix_user_exercise 并使用

$user_id = get_current_user_id(); // Get user id of logged in user (Bob).
update_user_meta( $user_id, \'prefix_user_exercise\', \'3/4 swing\' );
为了使用自定义表为用户保存其他数据,您需要以下代码来获取信息。

global $wpdb;
$user_id = get_current_user_id();

$sql = "SELECT * FROM {$wpdb->prefix}my_table_name WHERE ID=%d";
$user_data = $wpdb->get_results( $wpdb->prepare( $sql, $user_id ) );

WPDB documentation

相关推荐

为什么GET_USERS()不在管理后端工作?

我不明白为什么get_users() 可在前端工作,但不能在管理后端工作。我相信这在某种程度上是可行的。我的代码:function add_new_user_menu_item() { remove_submenu_page(\'users.php\', \'user-new.php\'); $submenu_title = __( \'Add new\', \'myplugin\' ); add_submenu_page(