magento在不丢失数组值的情况下建立多个数据库连接

时间:2011-07-25 19:16:29

标签: php mysql arrays zend-framework magento

我正在尝试连接两个不同的数据库,所以我的脚本应该按如下方式工作

  1. 查找订单状态已完成的当前登录客户的所有订单,它是一个虚拟产品,并且有一个juno订单ID(此查询可以正常工作)

  2. 收集已找到的所有订单ID并将其存储在一个数组中(这样可以正常工作)

  3. 现在连接到sales_order_items以及作为订单ID一部分的每个项目,检查数据库是否有网址下载链接,

  4. 如果不是我将连接到api -

  5. 问题是,当我想进行第二次连接时,我似乎丢失了存储在$ orderIds数组中的所有值。

    我一直在寻找解决方案,但我对zend框架很陌生

    任何帮助将不胜感激

    我的脚本如下

            $conn = Mage::getSingleton('core/resource')->getConnection('core_write');
        $result = $conn->query('select * from sales_flat_order WHERE customer_id='.$session->getCustomerId().' AND state="complete" AND is_virtual=1 AND juno_order_id!="null"');
    
        $orderIds=array();
    
        foreach ($result as $orderId)
        {
        $orderIds[]=$orderId[entity_id];    
    
        $itemsonOrder=$conn->query('select * from sales_flat_order_items WHERE order_id='.$order[entity_id]);
    
    
    
        }
    
    
    
    // value of first array $orderIds gets lost if i make annother connection using $conn
            echo 'items on order';
            print_r($itemsonOrder);
            echo '<pre>';
            print_r($orderIds);
            echo '</pre>';
    

1 个答案:

答案 0 :(得分:1)

当您使用第二个查询进行连接时,您还没有完成第一个查询。继续完成第一个查询,然后启动第二个查询。尝试更像这样的东西......

$conn = Mage::getSingleton('core/resource')->getConnection('core_write');
$result = $conn->query('select * from sales_flat_order WHERE customer_id='.$session->getCustomerId().' AND state="complete" AND is_virtual=1 AND juno_order_id!="null"');
$orderIds=array();
foreach ($result as $orderId)
{
  $orderIds[]=$orderId[entity_id];    
}
foreach ($orderIds as $orderId)
{
  $itemsonOrder=$conn->query('select * from sales_flat_order_items WHERE order_id='.$orderId);
}

此外,您应该确保在进行查询时使用参数。像这样连接sql字符串可能很危险(有时会让你对漏洞开放)。例如,

$conn->query('select * from sales_flat_order_items WHERE order_id='.$orderId);

应改为

$conn->query('select * from sales_flat_order_items WHERE order_id=?', array($orderId));

另外,你真的需要“选择*”???我的意思是,只需选择您需要的列。