尽管更新URL,顺序cURL仍返回相同的内容

I'm trying to write a script to cURL a few pages from a password protected site.

The idea is to scrape information on submitted stock codes from their products database to generate and print out the results (eventually importing directly to my own database, but currently just printing the results on screen).

My function is as follows:

function LookupProduct($ItemCodes) {    

//set a temp file name for the login cookie
    $tmp_fname = "tmp/".md5(date('D F d')).".cookie";
    $tmp_fname = realpath($tmp_fname);

//reset/declare the functions output
    $return = '';

// build post data from form
    $fields = array(
        'UserName' => urlencode("username"),
        'Password' => urlencode("password"),
    );
    $fieldString='';
    foreach($fields as $key=>$value) { 
        $fieldString .= $key.'='.$value.'&';
    }
    rtrim($fieldString, '&');

//initialise the curl session
    $ch = curl_init();

//set options for curl login 
    $loginurl = "https://suppliers-website/login/";
    curl_setopt($ch,CURLOPT_URL, $loginurl);
    curl_setopt($ch,CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch,CURLOPT_COOKIESESSION, true);
    curl_setopt($ch,CURLOPT_POST, count($fields));
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch,CURLOPT_POSTFIELDS, $fieldString);
    curl_setopt($ch,CURLOPT_COOKIEJAR, $tmp_fname);
    curl_setopt($ch,CURLOPT_COOKIEFILE, $tmp_fname);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);

//do the actual login, generate cookie
    $result = curl_exec($ch);

//build array of codes to lookup
    $codes=explode(",", $ItemCodes);

//lookup each code in the array
    foreach($codes as $code) {

        //set the product page to curl
        $lookupUrl = "https://suppliers-website/product/".$code;        
        curl_setopt($ch,CURLOPT_URL, $lookupUrl);

        //load product page html into $lookupcontent
        unset($lookupcontent);
        $lookupcontent = curl_exec($ch);

        //if we have a valid page, then go ahead and pluck the data
        if (strlen($lookupcontent) < 100) {
            echo "<li>Error logging in: <blockquote>".$lookupcontent."</blockquote></li>";
        } else {

            //load product page html into a DOM
            unset($dom);
            unset($xpath);
            $dom = new DOMDocument;
            $dom->loadHTML($lookupcontent);
            $xpath = new DOMXPath($dom);

            //find the image src
            unset($imgnames);
            foreach($dom->getElementsByTagName('a') as $node) {
                if (strpos($node->getAttribute('href'),'StockLoRes') !== false) {
                    $imgnames = explode("=", $node->getAttribute('href'));
                    $imgname = $imgnames[1];

                    $filelocation = $node->getAttribute('href');
                }
            }

            //set the image to curl
            $imglink = "https://suppliers-website/login/".$filelocation;
            curl_setopt($ch,CURLOPT_URL,$imglink);  

            //curl the image
            unset($curlimage);
            $curlimage = curl_exec($ch);

            //save the image locally
            unset($saveimage);
            $saveimage = fopen('tmp/'.$imgname, 'w');
            fwrite($saveimage, $curlimage);
            fclose($saveimage);

            // find the product description
            unset($results);
            $classname = 'ItemDetails_Description';
            $results = $xpath->query("//*[@class='" . $classname . "']");

            if ($results->length > 0) {
                $description = $results->item(0)->nodeValue;
                $description = strip_tags($description);
                $description = str_replace("•", "", $description);
            }

            //find the price
            unset($pricearray);

            foreach($dom->getElementsByTagName('div') as $node) {
                if (strpos($node->nodeValue,'£') !== false) {
                    $pricearray[] = $node->nodeValue;
                }
            }
            $pricearray=array_reverse($pricearray);
            $price = $pricearray[0];
            $price = str_replace("£", "", $price);

            //find the title
            unset($results);
            $classname = 'ItemDetails_ItemName';
            $results = $xpath->query("//*[@class='" . $classname . "']");

            if ($results->length > 0) {
                $title = $results->item(0)->nodeValue;
            }

            //find the publisher
            unset($results);
            $classname = 'ItemDetails_Publisher';
            $results = $xpath->query("//*[@class='" . $classname . "']");

            if ($results->length > 0) {
                $publisher = $results->item(0)->nodeValue;
            }
        }

        //add all the values to the data to be returned
        $return .= '<div style="border:1px solid grey;margin:20px;float:left;">';
        $return .= "<a href='tmp/".$imgname."'>";
        $return .= "<img src='tmp/".$imgname."' width='100' align='left' /></a>";
        $return .=  "<h1>"  .$title     ."</h1>";
        $return .=  "<h3>"  .$publisher ."</h3>";
        $return .=  "<h2>£" .$price     ."</h2>";
        $return .=  "<h4>"  .$description."</h2>";
        $return .= '</div><br clear="all" />';

    }

    //echo out the data
    echo $return;

    //close connection
    curl_close($ch);
}

I am using the following to trigger it:

if(isset($_POST['ItemCodes'])) {  
    $code=$_POST['ItemCodes'];
    $code=str_replace("
", ",", $code);
    $code=str_replace("", ",", $code);
    echo "ItemCodes: ".$code;
    echo LookupProduct($code);
}

The script can successfully log in, save a cookie, and get info from a page, but if I try to request multiple pages the script fails to work as intended, instead returning 3 instances of the same product. Did I fail to reset a variable somewhere? I've tried unsetting everything but I still just get the same product three times, as if my function only works once.