как вставить результаты запроса в массив в php и проверить их в другом массиве - PullRequest
0 голосов
/ 12 мая 2018

У меня есть lawyer, lawyerBadges, таблицы значков в базе данных mysql. Я хочу загрузить все идентификаторы значков в значке в массив. (AllBadges []). И я хочу загрузить все идентификаторы значков юриста в другой массив(lawyerBadges []). Затем я хочу проверить, есть ли элементы allBadges в lawyerBades.how, как это сделать.

Вот мой код до сих пор.

    $username = $_SESSION['username'];

    getPoints();


    function getPoints(){
        global  $connection;
        global $username;
        $pointCount_query =mysqli_query( $connection,"SELECT * FROM lawyer WHERE username='".$username."'");
        $pointCount=mysqli_fetch_array($pointCount_query);
        $points= (int)$pointCount['points'];

        addBadges($points);

    }

    function addBadges($user_points){
        global  $connection;
        global $username;
        $badge_array = array();
        $badgeList=mysqli_query($connection,"SELECT bId FROM badge ");
        $badges=mysqli_fetch_array($badgeList);

        $lawyers_badges=mysqli_query($connection,"SELECT bID FROM lawyerbadge WHERE username='".$username."'");
        while($row=mysqli_fetch_assoc($lawyers_badges)){
            $badge_array[]=$row;
        }

        //this is the problem area
       foreach( $badge_array  as $value){
            echo $value.'<br />';

        }


    }

1 Ответ

0 голосов
/ 12 мая 2018

Вам понадобится 2 для петель.Внешний цикл будет перебирать все значки.Внутренний цикл перебирает все значки адвокатов.Если значок внешних петель не найден, он отобразит значок

foreach( $badgeList as $badge){
    $badge_found_flag = false;
    foreach( $badge_array  as $lawyerBadge){
        $badge_found_flag = true;

    }
    if($badge_found_flag == false){
        echo $badge.'<br />';
    }
}

Обновление

Лучшей альтернативой будет использование LEFT JOIN, для которого не требуетсязацикливание вручную и получение результата только одним запросом.

SELECT badge.bId FROM badge 
LEFT JOIN lawyerbadge  ON badge.bId = lawyerbadge.bID
WHERE username = '$username'"
AND lawyerbadge.bID IS NULL;

Это вернет только те значки, которые вас интересуют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...