我正在开发一个脚本,用于根据我们的 WP 数据库检查 get 请求。到现在为止我都过得很好。
现在我需要检查与数据库中的获取请求中的电子邮件关联的角色。如图所示here我知道用户角色存储在 wp_usermeta 表的 meta_value 列中。
我需要在我的脚本中运行一个条件,如果用户角色是订户,那么我将回显“已禁用”,如果它是我们的自定义角色 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
最佳答案
$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';
}
关于php - 如何查看WP数据库中的用户角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25395313/