Hallo!
Wir haben einen möglicherweise einen Bug entdeckt ( Shop-Version 5.2.4). Wenn in dem Standard-Suchfeld unter Nutzung der Volltextsuche ein String mit Sonderzeichen ">" eingegeben wird, dann kommt es zu einem SQL-Fehler.
Nachfolgendes Beispiel mit der Suche nach "brot >":
Je nach Suchanfrage wird manchmal auch folgender Fehler ausgespielt: SQLSTATE[42000]: Syntax error or access violation: 1064 syntax error, unexpected >
Die Suche funktioniert zum Glück trotzdem, allerdings häufen sich die Einträge im Log diesbezüglich und verursachen eine große Datenmenge.
Ich habe nun in /includes/src/Filter/States/BaseSearchQuery.php in Zeile 906 das Sonderzeichen ">" ergänzt, das somit vom Query entfernt wird.
Viele Grüße
Anna-Lena
Wir haben einen möglicherweise einen Bug entdeckt ( Shop-Version 5.2.4). Wenn in dem Standard-Suchfeld unter Nutzung der Volltextsuche ein String mit Sonderzeichen ">" eingegeben wird, dann kommt es zu einem SQL-Fehler.
Nachfolgendes Beispiel mit der Suche nach "brot >":
SQL:
Error executing query INSERT INTO tsuchcachetreffer
SELECT kSuchCache, kArtikelTMP, ROUND(MAX(score) * -10)
FROM ( SELECT 262400 AS kSuchCache,
IF(tartikel.kVaterArtikel > 0, tartikel.kVaterArtikel, tartikel.kArtikel) AS kArtikelTMP, MATCH (tartikel.cName, tartikel.cSeo, tartikel.cSuchbegriffe, tartikel.cArtNr, tartikel.cKurzBeschreibung, tartikel.cBeschreibung, tartikel.cBarcode, tartikel.cISBN, tartikel.cHAN)
AGAINST (brot > IN NATURAL LANGUAGE MODE) AS score
FROM tartikel
WHERE MATCH (tartikel.cName, tartikel.cSeo, tartikel.cSuchbegriffe, tartikel.cArtNr, tartikel.cKurzBeschreibung, tartikel.cBeschreibung, tartikel.cBarcode, tartikel.cISBN, tartikel.cHAN)
AGAINST (brot* >* IN BOOLEAN MODE) AND (tartikel.cLagerBeachten != Y
OR tartikel.fLagerbestand > 0
OR (tartikel.cLagerVariation = Y
AND (
SELECT MAX(teigenschaftwert.fLagerbestand)
FROM teigenschaft
INNER JOIN teigenschaftwert ON teigenschaftwert.kEigenschaft = teigenschaft.kEigenschaft
WHERE teigenschaft.kArtikel = tartikel.kArtikel
) > 0
) OR tartikel.cLagerKleinerNull = Y) ) AS i
LEFT JOIN tartikelsichtbarkeit
ON tartikelsichtbarkeit.kArtikel = i.kArtikelTMP
AND tartikelsichtbarkeit.kKundengruppe = 1
WHERE tartikelsichtbarkeit.kKundengruppe IS NULL
GROUP BY kSuchCache, kArtikelTMP LIMIT 300
SQLSTATE[42000]: Syntax error or access violation: 1064 syntax error, unexpected $end, expecting FTS_TERM or FTS_NUMB or *
Je nach Suchanfrage wird manchmal auch folgender Fehler ausgespielt: SQLSTATE[42000]: Syntax error or access violation: 1064 syntax error, unexpected >
Die Suche funktioniert zum Glück trotzdem, allerdings häufen sich die Einträge im Log diesbezüglich und verursachen eine große Datenmenge.
Ich habe nun in /includes/src/Filter/States/BaseSearchQuery.php in Zeile 906 das Sonderzeichen ">" ergänzt, das somit vom Query entfernt wird.
Viele Grüße
Anna-Lena