如何检查WP数据库中的用户角色

时间:2014-08-20 01:11:50

标签: php mysql sql wordpress

我正在开发一个脚本,用于检查针对WP数据库的get请求。到目前为止,我已经能够很好地完成任务。

现在,我需要检查数据库中get请求与电子邮件关联的角色。如here所示,我知道用户角色存储在meta_value列的wp_usermeta表中。

我需要在我的脚本中运行一个条件,如果用户角色是订阅者,那么我将回显“已禁用”,如果它是我们的自定义角色ntnw_member,那么我将回显“已启用”。

以下是我在meta_value列的字段中看到的示例:

a:1:{s:11:"ntnw_member";b:1;}

我只需要在双引号之间获取部分,并检查它是否等于订阅者或ntnw_member。

这里是查询的尝试 - 注意checkRole变量是我被卡住的地方:

/**************************************************
    Get our request and test against database
**************************************************/
if(isset($_GET["email"])) {

    $userEmail = mysqli_real_escape_string($connect, $_GET["email"]);

    //check email against database
    $checkEmail = mysqli_query($connect, "select * from wp_usermeta WHERE meta_value = '$userEmail'") or die('Error: ' . mysqli_error($connect));

    if(mysqli_num_rows($checkEmail)>0){

     while ($row = mysqli_fetch_array($checkEmail, MYSQL_ASSOC)) {

        //get the user_id from database
        $userID = $row[user_id];

        $subscriber = Array(
            'subscriber' => 1
        );

        $ntnwMember = Array(
            'ntnw_member' => 1
        );

        $checkRole = mysqli_query($connect, "select * from wp_usermeta WHERE user_id = '$userID' AND meta_value = '$ntnwMember'") or die('Error: ' . mysqli_error($connect));

        if ($checkRole){
          echo 'Enabled';
        } else {
          echo 'Disabled';
        }

    } //end while $row
} else {
    //if email address does not match anything on file, kill this script
    die('Failed: Your email address does not match our records');
} //end if if(mysqli_num_rows($checkEmail)>0){}

} //endif isset

1 个答案:

答案 0 :(得分:0)

$ checkRole会在出现错误时返回false。

相反,使用mysqli_num_rows检查是否有任何行返回。

$userID = $row["user_id"];

$sql = "select * from wp_usermeta WHERE user_id = '" . $userID . "' AND meta_value LIKE '%ntnw_member%'";

$checkRole = mysqli_query($connect, $sql) or die('Error: ' . mysqli_error($connect));

if (mysqli_num_rows($checkRole)>0){
  echo 'Enabled';
} else {
  echo 'Disabled';
}