我正在尝试连接两个不同的数据库,所以我的脚本应该按如下方式工作
查找订单状态已完成的当前登录客户的所有订单,它是一个虚拟产品,并且有一个juno订单ID(此查询可以正常工作)
收集已找到的所有订单ID并将其存储在一个数组中(这样可以正常工作)
现在连接到sales_order_items以及作为订单ID一部分的每个项目,检查数据库是否有网址下载链接,
如果不是我将连接到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>';
答案 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));
另外,你真的需要“选择*”???我的意思是,只需选择您需要的列。