我正在开发一个脚本,用于检查针对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
答案 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';
}