php - second condition not being met when condition is called

one text

Solution:

When $stmt return null results while block won't be executed. Try this

<?php

if (($_SERVER['REQUEST_METHOD'] === "GET") && isset($_GET['hash_token'])) {

    $db = DB_CONNECT();
    $stmt = $db->prepare("SELECT id, email, confirm_code FROM users WHERE confirm_code = ?");
    $stmt->bind_param('s', $_GET['hash_token']);
    $stmt->execute();
    $result = $stmt->get_result();
    $stmt->close();

    if (mysqli_num_rows($result) > 0 ) {
        while ($row = mysqli_fetch_assoc($result)) {
    
            $email = $row['email'];
            $confirm_code = $row['confirm_code'];
    
            if ($confirm_code !== null && $confirm_code === $_GET['hash_token']) {
    
                $is_activated = 1;
                $set_confirm_code = null;
    
                $stmt2 = $db->prepare("UPDATE users SET is_activated = ?, confirm_code = ?  WHERE confirm_code = ?");
                $stmt2->bind_param('sss', $is_activated, $set_confirm_code, $confirm_code);
                $stmt2->execute();
                $stmt2->close();
    
                set_message("Your account has been activated please login.", SUCCESS);
                redirect_to_url("/");
    
    
            } else {
            
    
                set_message("Unable to activate with provided data.", WARNING);
                redirect_to_url("/");
    
    
            }
        }
    } else {
        set_message("Unable to activate with provided data.", WARNING);
        redirect_to_url("/");
    }
}

Source