При этом:
foreach($get as $g) {
$mID = $g['mID'];
}
вы не выполняете каждый раз выполнение, поэтому вы сохраняете только последний идентификатор, что означает, что:
WHERE ID != ?
использует только последнийзначение (в зависимости от того, как вы упорядочиваете результаты).
Также вы используете $db->fetch();
, который возвращает только одну строку.Вы хотите использовать $db->fetchAll();
Я думаю, что вы сможете сделать это в одном запросе, как было предложено.Вы должны использовать INNER JOIN
- не зная структуры вашей таблицы, я бы рискнул предположить:
SELECT * FROM daily_missions dm
INNER JOIN user_missions_complete umc ON (dm.id = umc.mID)
WHERE dm.userid = ?
Таким образом, ваш окончательный код будет выглядеть примерно так:
$db->query("SELECT * FROM daily_missions dm
INNER JOIN user_missions_complete umc ON (dm.id = umc.mID)
WHERE dm.userid = ?");
$db->execute([$user_class->id]);
$m = $db->fetchAll();
затемВы можете просмотреть весь список результатов.
Естественно, вам нужно будет проверить ваши связи таблиц и имена столбцов, но это должно помочь вам в лучшем направлении.
Также, если вам это нужночтобы отфильтровать результаты MySQL по нескольким значениям, вы должны изучить с помощью предложений WHERE IN(
и / или HAVING