我有两个表第一个包含成员级别和相关课程的列表(例如:分配给级别1的课程1、分配给级别2的课程2、分配给等级2的课程3(第二个包含所有课程的列表。我只想列出与当前用户级别相关联的课程。所以我写道:
全球
$wpcwdb, $wpdb;
if (!current_user_can('administrator')) {
function get_user_roles_by_user_id( $user_id ) {
$user = get_userdata( $user_id );
return empty( $user ) ? array() : $user->roles;
}
$user_id = get_current_user_id();
$user_ad_roles= get_user_roles_by_user_id($user_id);
$user_ad_roles= implode("','",$user_ad_roles);
echo $user_ad_roles;
// and this show the role (level) for the current user
// then interrogate the table 1
$SQL = "
SELECT course_id
FROM $wpcwdb->map_member_levels
WHERE member_level_id = '$user_ad_roles' ";
$corsi_del_livello = $wpdb->get_results($SQL);
//now I need to filter the second table on the results of this first query
$SQL = "
SELECT *
FROM $wpcwdb->courses
WHERE course_id IN(".implode(',',$corsi_del_livello).")
ORDER BY $orderBy $ordering";
$courses = $wpdb->get_results($SQL);
}
但它不起作用。
在Wordpress中,我得到以下错误"Catchable fatal error: Object of class stdClass could not be converted to string in C:'xampp'htdocs'profad.it'wp-content'plugins'wp-courseware'pages'page_course_dashboard.inc.php on line 79"
。第79行是第二个查询中的"WHERE"子句。
有人能帮我吗?
已解决!!我在两张表之间进行了一次Join,这就是代码:
global $wpcwdb, $wpdb;
if (!current_user_can('administrator')) {
function get_user_roles_by_user_id( $user_id ) {
$user = get_userdata( $user_id );
return empty( $user ) ? array() : $user->roles;
}
$user_id = get_current_user_id();
$user_ad_roles= get_user_roles_by_user_id($user_id);
$user_ad_roles= implode("','",$user_ad_roles);
echo $user_ad_roles;
$livelli= $wpcwdb->map_member_levels;
$corsi= $wpcwdb->courses;
$SQL = "
SELECT $livelli.course_id, $corsi.*
FROM $corsi INNER JOIN $livelli ON $corsi.course_id = $livelli.course_id
WHERE $livelli.member_level_id = '$user_ad_roles' ";
$courses = $wpdb->get_results($SQL);
}