如何获取登录用户的当前user_id

时间:2019-10-23 18:54:13

标签: php mysql wordpress

我刚刚创建了一个php文件来更新mysql db中的字段,我的更新查询是我遇到的问题,我想将'user_id'设置为已登录的当前用户的user_id,因此更新将转到适当的用户。我一直无法使它正常工作。我感觉是因为我没有在代码中更早地声明当前用户,我该怎么做?

以下是一行:

$sql = "UPDATE wp85_usermeta SET `meta_value` = `meta_value`+65000 WHERE `user_id` = user_id AND `meta_key` = 'mycred_default'"

这是完整的代码:

<?php
    $servername = "localhost";
    $username = "sparyqmr_wp324";
    $password = "(S8p3uV-2t";
    $dbname = "sparyqmr_wp324";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    $sql = "UPDATE wp85_usermeta SET `meta_value` = `meta_value`+65000 WHERE `user_id` = user_id AND `meta_key` = 'mycred_default'";

    if ($conn->query($sql) === TRUE) {
        echo "Record updated successfully";
    } else {
        echo "Error updating record: " . $conn->error;
    }

    $conn->close();
?>

3 个答案:

答案 0 :(得分:0)

尝试使用会话变量。会话变量是全局变量,存储在每个用户的服务器上。

如果用户登录,则可以将其用户ID存储在会话变量中。如果会话开始,则可以在所有文档中访问该变量。

您可以通过以下方式开始会话:

session_start();

您可以使用以下代码设置会话变量:

$_SESSION['userid'] = 'your_user';

答案 1 :(得分:0)

已登录的用户信息位于WP Session Cookies中。

示例:

    foreach ($_COOKIE as $k => $v) {
        if ( preg_match( "/wordpress_logged_in/", $k ) ) {
            // DO SOMETHING WITH THIS COOKIE
        } // end if matched login cookie
} // end foreach

答案 2 :(得分:0)

我能够解决此问题,在代码顶部添加了以下内容

require ('wp-blog-header.php');

global $wpdb;

global $current_user;
get_currentuserinfo();

$skrivID = $current_user->ID;

稍后在代码中使用$ skrivID会自动返回已登录用户的用户ID