Get specific ACF key and value from all posts – no access to DB

Why are you using $wpdb? This is a simple query,
check the ACF docs for usage examples (https://www.advancedcustomfields.com/resources/query-posts-custom-fields/)

<?php 
// args
$args = array(
    'numberposts'   => -1,
    'post_type'     => 'product'
);

// query
$the_query = new WP_Query($args);

?>
<?php if( $the_query->have_posts() ):?>
    <ul>
    <?php while( $the_query->have_posts() ) : $the_query->the_post();?>
        <li>
            <?php the_title();?> - <a href="https://wordpress.stackexchange.com/questions/285872/<?php the_field("product_url');?>"><?php the_field('product_url');?></a>
        </li>
    <?php endwhile;?>
    </ul>
<?php endif;?>

<?php wp_reset_query();?>