Search code examples
phpmysqlx-cart

Using an ID array to perform a single db query


I'm trying to perform a single query to the db, in which I am using an array of IDs to insert in the WHERE clause. So far I've had mixed results, and this is the closest I've gotten to achieve what I am looking for.

$prodId = array(17754, 17755, 17756);
$ids = implode(",",$prodId);

$qry = "SELECT clean_url AS url FROM xcart_clean_urls WHERE resource_id IN ($ids) ";
$resultTst = db_query($qry);

while ($result_row = db_fetch_array($resultTst)) {
   $urls[] = $result_row;
   if ( $urls ) {
      echo $urls[0]['url'] . '<br>';
      echo $urls[1]['url'] . '<br>';
      echo $urls[2]['url'] . '<br>';
   }
}

THE RESULTS I GET (I get the actual urls):
urlforid17754

urlforid17754
urlforid17755

urlforid17754
urlforid17755
urlforid17756

How can I perform the same functionality, but only retrieve the 3 urls once?

Thank you all.


Solution

  • You are trying to echo 3 rows each time through the loop. Move them out of the loop or just echo $result_row. If you don't need the echo then just use $urls after the loop. The URL seems to be in the url column so echo that:

    while ($result_row = db_fetch_array($resultTst)) {
       echo $result_row['url'];
       $urls[] = $result_row;
    }
    
    //to see what $urls contains
    print_r($urls);
    

    I don't know what you want $urls to contain, but if you only want a single dimension then use this inside the loop instead:

       $urls[] = $result_row['url'];