Modify

Opened 5 years ago

Closed 5 years ago

Last modified 5 years ago

#1938 closed Bug/Fehler (invalid)

SQL-Fehler in checkout_process.php

Reported by: Volker Strähle Owned by: somebody
Priority: normal Milestone:
Component: Shop Version: trunk
Keywords: Cc:
Blocked By: Blocking:

Description

checkout_process.php:

298	    $specials_query = xtc_db_query("SELECT products_id,
299	                                           specials_quantity
300	                                      FROM ".TABLE_SPECIALS."
301	                                     WHERE products_id = '".xtc_get_prid($order->products[$i]['id'])."'
302	                                           ".SPECIALS_CONDITIONS);

Die Konstante SPECIALS_CONDITIONS kann die Spaltenangabe s.status beinhalten. Das führt zu einem Fehler.

Es sollte heißen:

298	    $specials_query = xtc_db_query("SELECT s.products_id,
299	                                           s.specials_quantity
300	                                      FROM ".TABLE_SPECIALS." s
301	                                     WHERE s.products_id = '".xtc_get_prid($order->products[$i]['id'])."'
302	                                           ".SPECIALS_CONDITIONS);

Man muss aber noch kontrolleiren ob es auch SPECIAL_CONDITIONS ohne "s." gibt.

Attachments (0)

Change History (5)

comment:1 by anonymous, 5 years ago

Veto.
In der checkout_process.php ist alles in Ordnung, siehe /includes/define_conditions.php

noRiddle

comment:2 by Gerhard Waldemair, 5 years ago

Resolution: invalid
Status: newclosed

in der Konstante SPECIALS_CONDITIONS kommt kein s.* vor. Nur in der Konstante SPECIALS_CONDITIONS_S

comment:3 by Torsten Riemer, 5 years ago

Milestone: modified-shop-2.0.6.0

comment:4 by Volker Strähle, 5 years ago

leider finde ich die Stelle nicht mehr, aber ich hatte eben im log den Fehler, dass s.status nicht Bestandteil der Spalten ist. (Mein Fehler das nicht zu dokumentieren)

Es stellt sich die Frage, warum man denn überhaupt 2 verschiedene SQL-Varianten braucht (mit und ohne s.*), wenn man das auch grundsätzlich mit s.* lösen kann.

Auch die Frage, warum an denn überhaupt eine Konstante braucht, wenn diese immer gesetzt wird und die SQL-Abfrage genauso gut vollständig im Code stehen könnte, statt über eine Konstante zu gehen. Ich habe zumindest keine Stelle gefunden, wo SPECIAL_CONDITIONS(_S) leer wäre oder auf Inhalt geprüft würde. Ist ja auch eine Konstante.

comment:5 by noRiddle, 5 years ago

Das ist analog zu PRODUCTS_CONDITIONS/PRODUCTS_CONDITIONS_P gemacht worden und ich finde es sinnvoll. Bei allen Queries, auch zukünftigen in Erweiterungen, kann man somit einfach immer dieselben Conditions benutzen, die, da es um GROUP_CHECK geht (und bei den Specials darum ob Sonderangebot aktiv), auch immer benötigt werden.
Das *_S, bzw. *_P wird bei JOINs für die Aliasse benötigt und ist deshalb ebenfalls sinnvoll.

Warum man auch ohne JOINs Aliasse benutzen sollte erschließt sich mir nicht (weil du sagst "...wenn man das auch grundsätzlich mit s.* lösen kann").

Den Sinn deines letzten Satzes verstehe ich überhaupot nicht.

Wenn du in den Logs einen Fehler hattest, "dass s.status nicht Bestandteil der Spalten ist" wird das eine Erweiterung gewesen sein die einen Fehler in der betroffenen Query hatte.

Gruß,
noRiddle

Modify Ticket

Action
as closed The owner will remain somebody.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.