我正在尝试连接到两个不同的数据库,因此我的脚本应按如下方式工作
查找当前登录客户的所有订单,其中订单状态完整,它是虚拟产品,并且具有 juno 订单 ID(此查询工作正常)
收集所有已找到的订单 ID 并将它们存储在一个数组中(这很好用)
现在连接到 sales_order_items,并针对属于订单 ID 的每个项目检查数据库是否具有 URL 下载链接,
如果没有,我将连接到 api --
问题是当我想建立第二个连接时,我似乎丢失了 $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>';
最佳答案
好吧,当您连接第二个查询时,您还没有完成第一个查询。继续完成第一个查询,然后开始第二个查询。尝试更多类似这样的事情...
$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));
另外,你真的需要“选择*”吗???我的意思是,只需选择您需要的列即可。
关于php - magento 建立多个数据库连接而不丢失数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6821129/