【发布时间】:2014-06-18 13:45:35
【问题描述】:
基本上,我想从上到下遍历整个表格。如果该项目已存在,则使用新数据更新该行。如果没有,请将数据附加到表中。我该如何实施呢?谢谢
更新:这在原始查询中很简单,但是,我在 MVC 架构上使用它。
【问题讨论】:
基本上,我想从上到下遍历整个表格。如果该项目已存在,则使用新数据更新该行。如果没有,请将数据附加到表中。我该如何实施呢?谢谢
更新:这在原始查询中很简单,但是,我在 MVC 架构上使用它。
【问题讨论】:
这里我可以建议使用magento内置函数insertOnDuplicate
$bind = array(
'product_link_attribute_id' => $attributeInfo['id'],
'link_id' => $linkId,
'value' => $value
);
$adapter->insertOnDuplicate($attributeTable, $bind, array('value'));
其中$bind 是您要插入的数组或行值,函数中的第三个参数应为array('value'),这将是您要检查值是否已存在于具有相同值的表中的列列表。
你也可以在下面的文件中找到这个方法的实现
lib\Varien\Db\Adapter\Pdo\Mysql.php
希望这对你有帮助。
【讨论】:
array('value'),将其更改为array('sku'),因此如果您已经存在sku,那么它将根据您的数据更新行。
$this->_db->query('TRUNCATE '. $this->_table);$this->_db你的数据库连接对象。如果你投票支持我的 ans 以便将来有人可以使用,我会很高兴
如果键存在,REPLACE 命令将删除该行,然后插入相同的信息。
这意味着任何自动增量键在执行操作后都会被更改,因为它不是同一行。这是一个新的,包含先前删除的行中的确切信息。
【讨论】:
请检查此代码:
function sendtodb($data) {
$invoiceid = $data['invoiceid'];
if($invoiceid != "") {
$checkinvoice = mysql_query("SELECT * FROM `paypal_ajustment_data_pure` WHERE `InvoiceID`='$invoiceid'") or die(mysql_error());
if(mysql_num_rows($checkinvoice) > 0) {
$paypalreferenceid = $data['paypalreferenceid'];
$checkpreferenceid = mysql_query("SELECT * FROM `paypal_ajustment_data_pure` WHERE `InvoiceID`='$invoiceid' AND `PayPalReferenceID`='$paypalreferenceid'") or die(mysql_error());
if(mysql_num_rows($checkpreferenceid) == 0)
$updatereferncceid = mysql_query("UPDATE `paypal_ajustment_data_pure` SET `PayPalReferenceID`='$paypalreferenceid' WHERE `InvoiceID`='$invoiceid'") or die(mysql_error());
}
else {
mysql_query("INSERT INTO `nume_mage`.`paypal_ajustment_data_pure` (`id`, `TransactionID`, `InvoiceID`, `PayPalReferenceID`, `TransactionInitiationDate`, `TransactionCompletionDate`, `status`) VALUES (NULL, '$data[TransactionID]', '$data[invoiceid]', '$data[paypalreferenceid]', '$data[transactionintiationdate]', '$data[transactioncompletedate]', '1')") or die(mysql_error());
}
mysql_query("update `paypal_ajustment_data` set status=2 where id= '$data[id]'") or die(mysql_error());
}
else {
mysql_query("update `paypal_ajustment_data` set status=3 where id= '$data[id]'") or die(mysql_error());
}
}
【讨论】: