In a WP plugin that I am creating I have the following SQL:
global $wpdb;
$sql ="SELECT wp_users.`ID`,
wp_users.`user_email`,
wp_learndash_user_activity.`activity_id`,
wp_learndash_user_activity_meta.`activity_meta_key`,
wp_learndash_user_activity_meta.`activity_meta_value`
FROM wp_users
LEFT JOIN wp_learndash_user_activity
ON wp_learndash_user_activity.`activity_type` = 'quiz'
AND wp_users.`ID` = wp_learndash_user_activity.`user_id`
LEFT JOIN wp_learndash_user_activity_meta
ON wp_learndash_user_activity.`activity_id` = wp_learndash_user_activity_meta.`activity_id`
WHERE (wp_users.`ID` IN (".implode(',', $idList).")) AND (wp_learndash_user_activity_meta.`activity_meta_key` = 'percentage')";
$result = $wpdb->get_results($sql);
...and have attempted to prepare the statement by converting it to:
global $wpdb;
$result = $wpdb->get_results($wpdb->prepare("SELECT wp_users.`ID`,
wp_users.`user_email`,
wp_learndash_user_activity.`activity_id`,
wp_learndash_user_activity_meta.`activity_meta_key`,
wp_learndash_user_activity_meta.`activity_meta_value`
FROM wp_users
LEFT JOIN wp_learndash_user_activity
ON wp_learndash_user_activity.`activity_type` = 'quiz'
AND wp_users.`ID` = wp_learndash_user_activity.`user_id`
LEFT JOIN wp_learndash_user_activity_meta
ON wp_learndash_user_activity.`activity_id` = wp_learndash_user_activity_meta.`activity_id`
WHERE (wp_users.`ID` IN (".%s.")) AND (wp_learndash_user_activity_meta.`activity_meta_key` = 'percentage')", implode(',', $idList)));
But it is no longer working and I expect it is to do with the way I am attempting to pass the implode function as a parameter into %s. How can I correctly pass the result of the implode into %s?