最后一步结帐失败


Checkout failure on last step

我即将将我的网站上线,因为我必须将我的数据库更新为网站当前的销售订单和交易标准,而不是什么,所以他们只是符合。我将销售文件从实时数据库导入到即将成为实时数据库的数据库中,该数据库在此之前一直运行良好。更新后的销售和订单文件后,我的结帐过程在点击"下订单"的最后一步失败。它进入提交过程,然后简单地弹出一条消息,指出"处理您的订单时出错。请与我们联系或稍后重试。单击"确定",您只需盯着等待的购物车即可。我环顾四周,尝试了一些事情,但无济于事。所以我来找你们都知道堆栈船员!

这是我现在得到的错误日志;

    exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number:     parameter was not defined' in /www/www/store/lib/Zend/Db/Statement/Pdo.php:228
    Stack trace:
    #0 /www/www/store/lib/Zend/Db/Statement/Pdo.php(228): PDOStatement-    >execute(Array)
    #1 /www/www/store/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array)
    #2 /www/www/store/app/code/core/Zend/Db/Statement.php(291): Varien_Db_Statement_Pdo_Mysql->_execute(Array)
    #3 /www/www/store/lib/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
    #4 /www/www/store/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('SELECT `sales_f...', Array)
    #5 /www/www/store/lib/Varien/Db/Adapter/Pdo/Mysql.php(428): Zend_Db_Adapter_Pdo_Abstract->query('SELECT `sales_f...', Array)
    #6 /www/www/store/lib/Zend/Db/Adapter/Abstract.php(825): Varien_Db_Adapter_Pdo_Mysql->query(Object(Varien_Db_Select), Array)
    #7 /www/www/store/app/code/local/Mage/Sales/Model/Resource/Quote.php(169): Zend_Db_Adapter_Abstract->fetchOne(Object(Varien_Db_Select), Array)
    #8 /www/www/store/app/code/core/Mage/Sales/Model/Quote.php(1637): Mage_Sales_Model_Resource_Quote->isOrderIncrementIdUsed('100014532')
    #9 /www/www/store/app/code/core/Mage/Sales/Model/Service/Quote.php(147): Mage_Sales_Model_Quote->reserveOrderId()
    #10 /www/www/store/app/code/core/Mage/Sales/Model/Service/Quote.php(249): Mage_Sales_Model_Service_Quote->submitOrder()
    #11 /www/www/store/app/code/core/Mage/Checkout/Model/Type/Onepage.php(785): Mage_Sales_Model_Service_Quote->submitAll()
    #12 /www/www/store/app/code/core/Mage/Checkout/controllers/OnepageController.php(579): Mage_Checkout_Model_Type_Onepage->saveOrder()
    #13 /www/www/store/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Checkout_OnepageController->saveOrderAction()
    #14 /www/www/store/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('saveOrder')
    #15 /www/www/store/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
    #16 /www/www/store/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
    #17 /www/www/store/app/Mage.php(684): Mage_Core_Model_App->run(Array)
    #18 /www/www/store/index.php(87): Mage::run('', 'store')
    #19 {main}
    Next exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[HY093]: Invalid         parameter number: parameter was not defined' in /www/www/store/lib/Zend/Db/Statement/Pdo.php:234
    Stack trace:
    #0 /www/www/store/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array)
    #1 /www/www/store/app/code/core/Zend/Db/Statement.php(291): Varien_Db_Statement_Pdo_Mysql->_execute(Array)
    #2 /www/www/store/lib/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
    #3 /www/www/store/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('SELECT `sales_f...', Array)
    #4 /www/www/store/lib/Varien/Db/Adapter/Pdo/Mysql.php(428): Zend_Db_Adapter_Pdo_Abstract->query('SELECT `sales_f...', Array)
    #5 /www/www/store/lib/Zend/Db/Adapter/Abstract.php(825): Varien_Db_Adapter_Pdo_Mysql->query(Object(Varien_Db_Select), Array)
    #6 /www/www/store/app/code/local/Mage/Sales/Model/Resource/Quote.php(169): Zend_Db_Adapter_Abstract->fetchOne(Object(Varien_Db_Select), Array)
    #7 /www/www/store/app/code/core/Mage/Sales/Model/Quote.php(1637): Mage_Sales_Model_Resource_Quote->isOrderIncrementIdUsed('100014532')
    #8 /www/www/store/app/code/core/Mage/Sales/Model/Service/Quote.php(147): Mage_Sales_Model_Quote->reserveOrderId()
    #9 /www/www/store/app/code/core/Mage/Sales/Model/Service/Quote.php(249): Mage_Sales_Model_Service_Quote->submitOrder()
    #10 /www/www/store/app/code/core/Mage/Checkout/Model/Type/Onepage.php(785): Mage_Sales_Model_Service_Quote->submitAll()
    #11 /www/www/store/app/code/core/Mage/Checkout/controllers/OnepageController.php(579): Mage_Checkout_Model_Type_Onepage->saveOrder()
    #12 /www/www/store/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Checkout_OnepageController->saveOrderAction()
    #13 /www/www/store/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('saveOrder')
    #14 /www/www/store/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
    #15 /www/www/store/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
    #16 /www/www/store/app/Mage.php(684): Mage_Core_Model_App->run(Array)
    #17 /www/www/store/index.php(87): Mage::run('', 'store')
    #18 {main}

我可以看到它们都在处理同一个无效参数,但我假设如果我只是修复一个参数(这可能只是我假设的一个个人制作的用户帐户的参数),它仍然会错误其他一些,不能有效地解决问题。所以我不得不问,这是否让任何人知道我到底做了什么来炸毁我的商店?!谢谢你们的时间,真的!

首先,查看您的特定错误

异常"PDOException",消息为 SQLSTATE[HY093]:参数编号无效:未定义参数

这是PHP的数据库层说"有人用错了我"。 具体来说,看起来有人使用了参数化查询,其中包含空白和/或无效参数。

其次,查看您的堆栈跟踪,我注意到了这一点。

/www/www/store/app/code/local/Mage/Sales/Model/Resource/Quote.php(169): Zend_Db_Adapter_Abstract->fetchOne(Object(Varien_Db_Select), Array)

具体来说,您或某人似乎已经为报价资源模型创建了代码池覆盖。 在其他条件相同的情况下,我想说很可能是您从核心文件中对此文件所做的更改是导致您的问题的原因。 可能在这种方法中(大约第 169 行)

#File: app/code/core/Mage/Sales/Model/Resource/Quote.php
public function isOrderIncrementIdUsed($orderIncrementId)
{
    $adapter   = $this->_getReadAdapter();
    $bind      = array(':increment_id' => (int)$orderIncrementId);
    $select    = $adapter->select();
    $select->from($this->getTable('sales/order'), 'entity_id')
        ->where('increment_id = :increment_id');
    $entity_id = $adapter->fetchOne($select, $bind);
    if ($entity_id > 0) {
        return true;
    }
    return false;
}

我的猜测是你要么用$bind数组摇晃

$entity_id = $adapter->fetchOne($select, $bind);

或在 SQL 中包含未考虑的其他查询参数。

->where('increment_id = :increment_id');