Shortcode question

Why not like this:

//function to generate error messages for bid form
function generate_error_msg($type, $message){
    global $error_msg;

    if($type == "success") {
        $error_msg = "<div class="success">{$message}</div>";
        } else {
        $error_msg = "<div class="error">{$message}</div>";
    }
}

//Creates table, displays and validates bid form, and inserts valid bid data into table.
function bid_form_display(){
    //$error_msg = '';
    global $wpdb;

    // get post id for auction from post where auction is inserted. Used to track bids db.
    $postid = get_the_id();
    // creates jwp_bids table in database if it doesn't exist
    $table = $wpdb->prefix . "jwp_bids"; 
    $charset_collate = $wpdb->get_charset_collate();
    $sql = "CREATE TABLE IF NOT EXISTS $table (
        `id` mediumint(15) NOT NULL AUTO_INCREMENT,
        `bid_amt` decimal(10,2) NOT NULL,
        `email` varchar(255) NOT NULL,
        `bid_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,  
        `post_id` mediumint(15) NOT NULL,
         UNIQUE (`id`)
    ) $charset_collate;";
    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta( $sql );

    //Gets highest bid information and assigns to variables for display in post.
    $highest_bid_info = $wpdb->get_results(
        "Select max(bid_amt) AS bid, bid_time, email
        FROM $table
        WHERE post_id = $postid", ARRAY_A );
    $highest_bid_info = array_shift ( $highest_bid_info );
    $high_bid = $highest_bid_info['bid'];
    $high_bidder = $highest_bid_info['email'];
    $bid_time = $highest_bid_info['bid_time'];

    //assign error messages to variables
    $not_human = "Human verification incorrect.";
    $bid_invalid = "Invalid or no bid placed. Please enter a valid bid.";
    $email_invalid = "Invalid or no email entered. Please enter a valid email address.";
    $insert_failed = "Oops! Sorry. Website malfunction. Please try again.";
    $bid_posted = "Thank you! Your bid was posted successfully.";

    //sanitize bid form post variables and assign to new variables.
    $email = htmlspecialchars($_POST["email"], ENT_QUOTES, 'UTF-8');
    $bid_amount = htmlspecialchars($_POST["bid_amount"], ENT_QUOTES, 'UTF-8');
    $human = htmlspecialchars($_POST["message_human"], ENT_QUOTES, 'UTF-8');

    //process form entries, generate errors, if no errors insert bid info in db table
    if(!$human == 0){
        if($human != 2){
        generate_error_msg("error", $not_human); 
         } elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            generate_error_msg("error", $email_invalid);
              } elseif(empty($bid_amount)) { 
                  generate_error_msg("error", $bid_invalid);
                    } else {
                        //insert the posted form data into the database.
                        $insert_db = $wpdb->insert( 
                                        $table, 
                                            array( 
                                                'email' => $email,
                                                'bid_amt' => $bid_amount,
                                                'post_id' => $postid,
                                            )
                                        );
                                        if( $insert_db ){
                                            generate_error_msg("success", $bid_posted);
                                                } else {
                                                    generate_error_msg("error", $insert_failed);
                                                    }   
                            }
    }


//HTML for current status of bids: Highest bid, email of bidder, time of bid.
    $form_output="";
    $form_output .= '<div id="currentbid">';
        $form_output .= 'The current bid is $' . $high_bid .'.';
        // Display current bid + $2 as minimum for next bid.      
        $form_output .= 'Your minimum bid is $' . $high_bid . '.';
    $form_output .= '</div>';
//HTML for bid form
    $form_output .= '<div id="bid">';
        $form_output .= '<?php echo' . $error_msg . '?>';
        $form_output .= '<form method="post">';
            $form_output .= '<p><label for="email">Notification email (IMPORTANT!) <span>*</span><br><input type="text" name="email" value="' . $email . '"></label></p>';
            $form_output .= '<p><label for="bid_amount">Enter your bid<span>*</span> <br><input type="text" name="bid_amount" value="' . $bid_amount . '"></label></p>';
            $form_output .= '<p><label for="message_human">Human Verification: <span>*</span> <br><input type="text" style="width: 60px;" name="message_human"> + 3 = 5</label></p>';
            $form_output .= '<input type="hidden" name="submitted" value="1">';
            $form_output .= '<input type="hidden" name="post_id" value="' . $postid . '">';
            $form_output .= '<p><input type="submit"></p>';
        $form_output .= '</form>';
    $form_output .= '</div>';

    return $form_output;

}

add_shortcode('bid_form', 'bid_form_display');