在PHP数组中执行in语句

时间:2011-07-31 15:14:38

标签: php arrays magento filtering

我需要分解大量的记录,并且能够通过使用简单的lteq语句来提取前6000个,但我无法弄清楚如何提取另外的6k文件。

此代码似乎有效,但导致内存错误:

$filterData = array( 
'product_id' => array(14001, 'to'=> 17000)
);  

我需要制作一个循环:

$filterData = array( 
'product_id' => array('lteq' => 6000)
); 

以下是更多代码:

// get all my database products into an array
$products = $client->call($session, 'catalog_product.list', array($filterData));

然后转到下一个6001 - 12000的数组

有什么想法吗?

以下是正确的Magento / API / Soap / Filter调用:

$filterData = array( 
'product_id' => array('from' => 6001, 'to' => 10000)
); 

使用“from”和“to”来拉取介于两者之间的所有记录。


评论中的代码:

$client = new SoapClient($myDomain.'/api/?wsdl');
$session = $client->login($myAPILogin, $myAPIKey);

//some filter date to pass to the API - add more to filter your results further - see Magento API docs
//$filterData = array('type'=>'simple');
$filterData = array( 'product_id' => array('from' => 6001), array('to' => 7000) );

//get all my database products into an array
$products = $client->call($session, 'catalog_product.list', array($filterData));

3 个答案:

答案 0 :(得分:0)

可能使用模数运算符?

答案 1 :(得分:0)

尝试设置:

ini_set('memory_limit', -1);

在致电$client->call()之前,如果safe_modeOn,您需要更改php.ini文件。

另一种解决方案是在SQL中使用LIMIT / TOP并以较小的块处理记录。

答案 2 :(得分:0)

以下是正确的Magento / API / Soap / Filter调用:

$filterData = array( 
'product_id' => array('from' => 6001, 'to' => 10000)
); 

使用“from”和“to”来拉取介于两者之间的所有记录。