gpt4 book ai didi

php - Foreach 循环返回查询两次

转载 作者:行者123 更新时间:2023-11-29 08:29:34 28 4
gpt4 key购买 nike

我真的很感谢有人帮助解决问题。
顺便说一句,我在 Magento
我有这种方法,它基本上需要两组数据并用它们创建一个 sql 语句。

private function _getInsertSql($data, $itemData)
{

$sql = 'insert into orders_headers (';
$keys = array_keys($data);
$sql .= implode(', ', $keys);
$sql .= ') values (';
foreach($data as $value) {
$type = $value['type'];
$vv = $value['value'];
if ($type == 'number') {
$sql .= $vv;
} else {
$sql .= $this->_db->quote($vv);
}
$sql .= ',';
}
$sql = substr($sql, 0, strlen($sql)-1);
$sql .= ');';

$first = 0;
$sql .= 'insert into orders_lines (';
foreach($itemData as $data) {
if ($first <= 0) {
$keys = array_keys($data);
$sql .= implode(', ', $keys);
$sql .= ') values (';
} else {
$sql .= '(';
}
foreach($data as $value) {
$type = $value['type'];
$vv = $value['value'];
if ($type == 'number') {
$sql .= $vv;
} else {
$sql .= $this->_db->quote($vv);
}
$sql .= ',';
}
$sql = substr($sql, 0, strlen($sql)-1);
$sql .= '),';
$first++;
}

$sql = substr($sql, 0, strlen($sql)-1);

$sql .= ';';
Mage::log("START" .$sql . "END", NULL, 'sql.log');
return $sql;
}

正如您在最后看到的那样,我正在注销 .sql 并且奇怪的是它两次生成相同的查询。因此在数据库中插入同一行两次。

我一辈子都看不到它循环到顶部并再次创建查询的位置。

输出sql为:

2013-06-11T15:37:45+00:00 DEBUG (7): STARTinsert into orders_headers (orderID, datetime, ip, customerID, forename, surname, address1, address2, town, County, country, postcode, phone, 传真,电子邮件,公司,deliveryName,deliveryAddress1,deliveryAddress2,deliveryTown,deliveryCounty,deliveryCountry,deliveryPostcode,deliveryTelephone,goodsTotal,shippingTotal,taxTotal,discountTotal,order_state,order_status,order_comments,order_save_time,status, shippingMethod,paymentID,paymentName,paymentDate,shippingID,orderNotes, paymentNameNative, shippingMethodNative, referURL, accTypeID, offerCode, randID, e_website, e_status, e_purchaseordref, e_statuschk, e_accepted) 值 ('100004952','20130611153744','127.0.0.1',0,'TES','S','S ','','S','','GB','S','SA','','S@gmila.com','','TES S','S','', 'S','','GB','S','SA',28.88,7.25,4.81,0,'new','pending_awaiting_payment','','20130611153745','P','udropship_default', 5,'Cheque','',0,'','Cheque','udropship_default','master/site/',0,'','100004 952','master/site/','ZZZ888','','2106','');插入xm1_orders_lines(orderID,productID,code,name,qty,weight,price,nameNative,taxamount,ooprice,ootaxamount ,supplierID,supplierCost,supplierCostCurrencyID,order_state,order_status,order_save_time) 值 ('100004952',2106,'UGWA050','Stainless Steelwine 冰桶, magnum 9 pt',1,10.0900,16.82,'Stainless Steelwine 冰桶, magnum 9 pt',3.36,0,0,5,10.0900,1,'new','pending_awaiting_payment','20130611153745');END
2013-06-11T15:37:45+00:00 DEBUG (7): STARTinsert into orders_headers (orderID, datetime, ip, customerID, forename, surname, address1, address2, town, County, country, postcode, phone, 传真,电子邮件,公司,deliveryName,deliveryAddress1,deliveryAddress2,deliveryTown,deliveryCounty,deliveryCountry,deliveryPostcode,deliveryTelephone,goodsTotal,shippingTotal,taxTotal,discountTotal,order_state,order_status,order_comments,order_save_time,status, shippingMethod,paymentID,paymentName,paymentDate,shippingID,orderNotes, paymentNameNative, shippingMethodNative, referURL, accTypeID, offerCode, randID, e_website, e_status, e_purchaseordref, e_statuschk, e_accepted) 值 ('100004952','20130611153744','127.0.0.1',0,'TES','S','S ','','S','','GB','S','SA','','S@gmila.com','','TES S','S','', 'S','','GB','S','SA',28.88,7.25,4.81,0,'new','pending_awaiting_payment','','20130611153745','P','udropship_default', 5,'Cheque','',0,'','Cheque','udropship_default','master/site/',0,'','100004 952','/master/site/','ZZZ888','','2106','');插入xm1_orders_lines(orderID,productID,code,name,qty,weight,price,nameNative,taxamount,ooprice, ootaxamount,supplierID,supplierCost,supplierCostCurrencyID,order_state,order_status,order_save_time) values ('100004952',2106,'UGWA050','Stainless Steelwine ice bucket, magnum 9 pt',1,10.0900,16.82,'Stainless Steelwine ice bucket, magnum 9 pt',3.36,0,0,5,10.0900,1,'new','pending_awaiting_payment','20130611153745');END

任何人都可以提供帮助吗?

谢谢

最佳答案

我认为 foreach 没有给你两次查询,但你的方法被调用了两次。代码中的 log 方法位于 foreach 循环之外,并且日志文件本身包含 2 个条目(包含在 START 和 END 中)。
最好找出你在哪里调用该方法并在那里调试。

关于php - Foreach 循环返回查询两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17048412/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com