Magento: невозможно добавить товар в корзину после заказа

После оформления заказа добавить товар в корзину невозможно. Magento постоянно говорит мне: невозможно добавить товар в корзину.

Кроме того, если я попытаюсь изменить порядок, у меня появится ошибка:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1";i:1;s:2954:"#0 C:\wamp\www\ronamagento\trunk\lib\Zend\Db\Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array)

Если я выйду из системы, а затем снова войду, все будет работать нормально, пока я не сделаю еще один заказ.

Любая идея?

---------------------- РЕДАКТИРОВАТЬ -------------------------- < br />
Кажется, что ошибки исходят от sales / order / controllers / OrderController.php в функции изменения порядка в $ cart-> save ();
И тот же код в Checkout / controllers / CartController.php в функции добавления.
Похоже, объект моей тележки сломан или что-то в этом роде.

---------------------- РЕДАКТИРОВАТЬ ------------------- -------

---------------------- РЕДАКТИРОВАТЬ # 2 ------------------------- -

Хорошо, если я прокомментирую строку $ this-> getQuote () -> collectTotals (); в функции сохранения Checkout / model / cart.php кажется, что он работает, но не показывает, что товар был добавлен в мою корзину. Затем я возвращаю строку кода, и все работает нормально. Кажется, что-то не так в collectTotals () ...

---------------------- РЕДАКТИРОВАТЬ # 2 ----- ---------------------

Спасибо!


person Alex Beauchemin    schedule 02.12.2011    source источник
comment
Вы когда-нибудь устанавливали какое-нибудь расширение? Если это так, просто отключите или удалите эти экстенсины.   -  person Oğuz Çelikdemir    schedule 03.12.2011
comment
Да, у меня установлено несколько расширений + создано много пользовательских модулей, но я попытался отключить их все, но безуспешно.   -  person Alex Beauchemin    schedule 05.12.2011
comment
та же проблема, что и у меня. я не знаю, как действовать дальше. для моего сайта есть минимум 100 пользовательских режимов. может кто-нибудь помочь   -  person sivakumar    schedule 05.06.2015
comment
Включите системный журнал. Это создает для вас файлы дампа также выполненных операторов SQL. Затем вы можете увидеть неудачный оператор и отследить его до источника.   -  person Norbert van Nobelen    schedule 05.06.2015
comment
Алекс и Сивакумар, почему бы вам не сравнить свой список модулей сообщества, чтобы узнать, сможем ли мы найти подозреваемого?   -  person adrien54    schedule 11.06.2015


Ответы (1)


Скорее всего, это проблема, вызванная сторонним модулем, возможно, переписыванием модели Magento или предоставлением прослушивателя событий (мое предпочтительное предположение) с некоторыми неэкранированными (возможно, прямыми, без использования инфраструктуры Magento ORM) SQL-запросами в нем.

В качестве быстрой отладки я бы посоветовал вам попробовать отключить (не через Admin, это не сработает, поскольку он просто отключает рендеринг, а не перезаписывает или прослушиватели событий, а через переименование стороннего модуля app / etc / modules / [Module_Name ] .xml на что-то вроде «app / etc / modules / [Module_Name] .xml.disabled», поэтому Magento игнорирует его) каждый из имеющихся у вас сторонних модулей - один за другим - до тех пор, пока вы не разместите заказ.

После того, как вы определили ответственный модуль, вы можете либо найти исправление, правильно экранировав строку в запросе SQL, либо вернуться к производителю модуля с просьбой предоставить вам исправление.

Вы также можете попробовать правильную отладку с помощью xdebug, и я бы настоятельно не рекомендовал делать что-либо из этого в производственной среде, так как это может вызвать сбой.

Обратите внимание, что использование необработанных SQL-запросов с неэкранированными значениями представляет собой угрозу безопасности, поскольку может привести к атакам с использованием SQL-инъекций. Вы можете легко украсть данные ваших клиентов или взломать вашу базу данных просто людьми, использующими правильно созданные URL-адреса на вашем сайте.

person Dmitri Sologoubenko    schedule 16.06.2015