PHP意外的null变量无法回显Mysql结果

I have a form comprising of a table of users. An Admin can select multiple members via check boxes and mark them down. I am trying to echo the username of each successful mark on a success message to the user. However, my variable appears to be 'null'. What am i doing wrong? Below is my code:

if(empty($_POST['cap']) === false){
$week = date("W");
$users = $_POST['user'];
if(empty($users) === false){
    $cap_check = mysqli_query($con, "SELECT week FROM caps WHERE week = '$week'")or die(mysqli_error($con));
    if(mysqli_num_rows($cap_check) == 0){
        mysqli_query($con, "INSERT INTO caps (week, start_date, end_date, upgrades) VALUES('$week','','','')")or die(mysqli_error($con));
    }
    foreach($users as $user){
        $user = mysqli_real_escape_string($con, $user);
        $qry_check = mysqli_query($con, "SELECT capped_users.user, users.username FROM capped_users
        LEFT JOIN users ON capped_users.user = users.user_id
        WHERE user ='$user' AND cap_week = '$week'")or die(mysqli_error($con));
        $username = mysqli_fetch_assoc($qry_check);
        $name = $username['username'];
        if(mysqli_num_rows($qry_check) == 0){
            mysqli_query($con, "INSERT INTO capped_users(week, user) VALUES('$week','$user')")or die(mysqli_error($con));
            $confirm = mysqli_query($con, "SELECT user FROM capped_users WHERE user ='$user' AND week = '$week'")or die(mysqli_error($con));
            if(mysqli_num_rows($confirm) == 1){
                var_dump($name);
                $success_msg[] = '<b>'.$name.'</b>Member has been marked down for the cap this week.';
            }else
                $errors[]= 'Error! '.$name.' could not be marked down for this weeks cap.';
        }else
            $errors[]= '<b>'.$name.'</b> is already marked in the Cap list for this week.';
    }
}else{
    $errors[]= 'No members have been selected';
}
}

Note that:

$errors[]= '<b>'.$name.'</b> is already marked in the Cap list

seems to echo the username correctly. However, in:

$success_msg[] = '<b>'.$name.'</b>Member has been marked down for the cap this week.';

it only echoes "Member has been marked down for the cap this week.

What am I doing wrong?

I fixed the issue by altering the: $confirm = mysqli_query to:

$confirm = mysqli_query($con, "SELECT capped_users.user, users.username FROM capped_users LEFT JOIN users ON capped_users.user = users.user_id WHERE user ='$user' AND cap_week = '$week'")or die(mysqli_error($con)); $username = mysqli_fetch_assoc($confirm);

end echoing $username['username'] as opposed to echoing $name. I am unclear as to why the code posted in the question does not work. However, it is apparent that, somehow, mysql data assigned to a variable is lost when you run another query, thus meaning that you have to run the query again to retrieve the same data. I look forward to reading a better explanation.