SQL UPDATE => Fehler

Hallo zusammen,

nachdem ich Bilderdateinamen (Upload per FTP) wunderbar per SQL aktualisieren konnte, habe ich mich jetzt mal an Produkttitel und Beschreibungen gewagt. Leider erfolglos :frowning:

Als Beispiel die beiden Queries:


UPDATE oxarticles SET OXTITLE = 'XO Crème', oxsubtitle = 'Cocos, 17% Vol.',  OXSHORTDESC = 'Cremiger Cognaclikör aus Frankreich mit Kokosgeschmack' WHERE oxid = 'co133887312601e287a250e365021b34';

UPDATE oxarticles SET OXTITLE = 'XO Crème', oxsubtitle = 'Schokolade, 17% Vol.',  OXSHORTDESC = 'Cremiger Cognaclikör aus Frankreich mit Schokoladengeschmack' WHERE oxid = 'co16403f554705895db640134806afee';

Wenn ich nur eine der beiden in das Query-Feld einfüge und ausführe, funktioniert es problemlos.


SQL query (1) :	UPDATE oxarticles SET OXTITLE = 'XO Crème', oxsubtitle = 'Cocos, 17% Vol.', OXSHORTDESC
= 'Cremiger Cognaclikör aus Frankreich mit Kokosgeschmack' WHERE oxid =
'co13388731260...

Affected rows :	1

Sobald jedoch mehr als nur eine Query drin steht, hagelt es Fehler:

SQL query (1) :	UPDATE oxarticles SET OXTITLE = 'XO Crème', oxsubtitle = 'Cocos, 17% Vol.', OXSHORTDESC
= 'Cremiger Cognaclikör aus Frankreich mit Kokosgeschmack' WHERE oxid =
'co13388731260...

Error message :	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 'UPDATE oxarticles SET OXTITLE = 'XO Crème', oxsubtitle = 'Schokolade, 17% Vol.'' at line 2

Error number :	1064

Anscheinend besteht das Problem mit Umlauten und Sonderzeichen. Jedoch auch ein "SET names ‘UTF8’; hilft nichts… Beim Ausführen einer einzelnen Query werden alle Zeichen jedoch korrekt gespeichert, im Backend sowie auch richtig im Frontend dargestellt.

Leider habe ich keinen SSH Zugriff, sonst würde ich es per CLI machen.

Hat jemand eine Idee/Lösung? Denkbar wäre auch ein Umweg über eine .php Datei, die ich auf den Server per FTP laden könnte

Vielen Dank!

Guten Morgen foobarbaz,

die Fehlermeldung sagt aus, dass du das Prozentzeichen maskieren musst.

Deine MySQL Fehlernummer 1064: http://dev.mysql.com/doc/refman/5.0/en/error-messages-server.html#error_er_parse_error

Beispiele für die Maskierung:
http://dev.mysql.com/doc/refman/5.1/de/string-syntax.html

Das Prozent folgendermaßen mit Backlash maskieren

oxsubtitle = 'Schokolade, 17\% Vol.'

Viele Grüße aus Berlin
indianer3c

Hallo Indianer,

Auch mit Backslash der gleiche Fehler…


UPDATE oxarticles SET OXTITLE = 'XO Crème', oxsubtitle = 'Cocos, 17\% Vol.',  OXSHORTDESC = 'Cremiger Cognaclikör aus Frankreich mit Kokosgeschmack' WHERE oxid = 'co133887312601e287a250e365021b34';

UPDATE oxarticles SET OXTITLE = 'XO Crème', oxsubtitle = 'Schokolade, 17\% Vol.',  OXSHORTDESC = 'Cremiger Cognaclikör aus Frankreich mit Schokoladengeschmack' WHERE oxid = 'co16403f554705895db640134806afee';


SQL query (1) :	UPDATE oxarticles SET OXTITLE = 'XO Crème', oxsubtitle = 'Cocos, 17% Vol.', OXSHORTDESC
= 'Cremiger Cognaclikör aus Frankreich mit Kokosgeschmack' WHERE oxid =
'co13388731260...

Error message :	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 'UPDATE oxarticles SET OXTITLE = 'XO Crème', oxsubtitle = 'Schokolade, 17% Vol.'' at line 3

Error number :	1064

Wenn ich aus den beiden Queries die Sonderzeichen, hier “ö” und “è”, entferne, dann funktioniert’s !?

Gruß

Welchen Zeichensatz hast du für deine Datenbank eingestellt?
UTF-8 unterstützt meiner Meinung keine Umlaute oder Sonderzeichen.

Mach das einfach im PHPmyadmin und nicht im Backend.

Indianer, das kann ich dir so direkt nicht beantworten. Bei uns auf dem Server ist die COMMUNITY EDITION 4.6.2_46646 installiert. Ich gehe davon aus, dass alle Tabellen/Datenbanken automatisch durch das Setup erstellt wurden.

Was mich jedoch wundert, ist, dass wenn ich die Queries mit Sonderzeichen einzeln ausführe, alles problemlos funktioniert. Nur das einzelne Ausführen ist ja nicht Sinn der Sache…

[QUOTE=indianer3c;129952]UTF-8 unterstützt meiner Meinung keine Umlaute oder Sonderzeichen.[/QUOTE]
Öhm…doch tut es.

Ich würde es mal so versuchen:

UPDATE oxarticles SET oxtitle = "XO Crème", oxsubtitle = "Cocos, 17% Vol.",  oxshortdesc = "Cremiger Cognaclikör aus Frankreich mit Kokosgeschmack" WHERE oxid = 'co133887312601e287a250e365021b34';

UPDATE oxarticles SET oxtitle = 'XO Crème', oxsubtitle = 'Schokolade, 17% Vol.',  oxshortdesc = 'Cremiger Cognaclikör aus Frankreich mit Schokoladengeschmack' WHERE oxid = 'co16403f554705895db640134806afee';

Wobei ich “oxsubtitle” nicht kenne. Ich kenne nur “oxseotitle”…:wink:

[QUOTE=rubbercut;130019]Ich würde es mal so versuchen:

UPDATE oxarticles SET oxtitle = "XO Crème", oxsubtitle = "Cocos, 17% Vol.",  oxshortdesc = "Cremiger Cognaclikör aus Frankreich mit Kokosgeschmack" WHERE oxid = 'co133887312601e287a250e365021b34';

UPDATE oxarticles SET oxtitle = 'XO Crème', oxsubtitle = 'Schokolade, 17% Vol.',  oxshortdesc = 'Cremiger Cognaclikör aus Frankreich mit Schokoladengeschmack' WHERE oxid = 'co16403f554705895db640134806afee';

Wobei ich “oxsubtitle” nicht kenne. Ich kenne nur “oxseotitle”…;)[/QUOTE]

Leider der gleiche Fehler

(oxsubtitle ist ein custom field, auch ohne dieses Feld zu updaten der gleiche Fehler)

[QUOTE=leofonic;129956]Mach das einfach im PHPmyadmin und nicht im Backend.[/QUOTE]…

Leo, werde ich am WE probrieren, sofern es sich vorher keine andere Lösung finden lässt - es sollte ja eigentlich per Oxid Backend gehen…

Genau, sollte gehen, geht aber nicht: Bug! https://bugs.oxid-esales.com

Dann kann’s nur daran liegen: config.inc.php

$this->iUtfMode = 1;

Stelle um auf 0, also wie folgt.

$this->iUtfMode = 0;

Dann geht auch das…:wink:

Nachtrag: TMP nicht vergessen.

Sieht für mich auch mehr nach einem Bug aus (wenn es sonst keine andere Konfigurationsmöglichkeit gibt).

Wenn ich den UTF8 Modus für den ganzen Shop ausschalte, sieht der Rest ziemlich blöde aus :smiley: Dann doch lieber der Umweg über phpMyAdmin o.ä,