X-Cart: shopping cart software

X-Cart forums (https://forum.x-cart.com/index.php)
-   Dev Questions (https://forum.x-cart.com/forumdisplay.php?f=20)
-   -   Using an ID array to perform a db query (https://forum.x-cart.com/showthread.php?t=75407)

simetria 06-06-2017 06:07 AM

Using an ID array to perform a db query
 
Hi all,

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.

PHP Code:

require './auth.php';

$prodId = array(177541775517756);
$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.

Serge

simetria 06-06-2017 07:22 AM

Re: Using an ID array to perform a db query
 
Ok, fixed it.
I will leave it here for anyone looking for something similar...

PHP Code:

require './auth.php';

$prodId = array(177541775517756);
$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)) {
   echo 
$result_row['url'];
   
$urls[] = $result_row;



cherie 06-12-2017 12:42 PM

Re: Using an ID array to perform a db query
 
Simpler to use the built-in db functions (see include/func/func.db.php) and table references ($sql_tbl):

PHP Code:

$qry "SELECT clean_url FROM $sql_tbl[clean_urls] WHERE resource_id IN (".implode(',',$prodId).')';
$urls func_query_first($qry); 

func_query_column() is another good one that might be more of what you are looking for.

A more thorough reply might be to loop the productids and call func_get_resource_url() (see func.clean_urls.php), though that is more resource intensive, but should be fine for small lists of products.


All times are GMT -8. The time now is 05:10 PM.

Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.