Second 'Do While' loop is only showing last item

Just wondering, my full script below.

I previously used bind_result:
$stmt->bind_result($true, $id, $img_name, $ref, $layout, $collection);
These are now redundant?
I needed the $collection and $description (not shown) for the page title and metadata before I ran the loops - these are now empty?

Full script

if (isset($collection)) {

  $stmt = $mysqli->prepare("

    SELECT TRUE
      , p.id 
      , p.img_name
      , p.ref
      , p.layout
      , c.collection
    
    FROM collection_photos p
      LEFT JOIN collection_details c ON ( p.collection = c.collection )
    WHERE c.collection = ?");

    $stmt->bind_param('s', $collection);
    $stmt->execute();

    $stmt->bind_result($true, $id, $img_name, $ref, $layout, $collection);
    //$stmt->store_result();
    $resultSet = $stmt->get_result();
    $data = $resultSet->fetch_all(MYSQLI_ASSOC);
    $row_cnt = $resultSet->num_rows;

    print $stmt->error; //to check errors

    $stmt->fetch();

Can I improve this?

Barry