# Doppeltes Anführungszeichen statt Leerstring

**URL:** <https://forum.oxid-esales.com/t/doppeltes-anfuhrungszeichen-statt-leerstring/95353>\
**Category:** Deutsches Forum\
**Tags:** bug\
**Created:** [June 12, 2019, 12:44pm UTC](https://forum.oxid-esales.com/t/doppeltes-anfuhrungszeichen-statt-leerstring/95353 "2019-06-12T12:44:45Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jonas\_Hess](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/jonas_hess/32/1027_2.png) [@Jonas\_Hess](https://forum.oxid-esales.com/u/Jonas_Hess)\
**Post date:** [June 12, 2019, 12:44pm UTC](https://forum.oxid-esales.com/t/doppeltes-anfuhrungszeichen-statt-leerstring/95353/1 "2019-06-12T12:44:45Z")

</div>

BugVerdacht ist jetzt ein großes Wort. Zumal mir das bei einem jungfräulich installierten Pendant logischer Weise selber Version nicht passiert, aber ich weiß nicht wo ich anfangen soll mit suchen.

Ich hab mir da nen CE 6.1.2 installiert.

Und beim Anlegen eines neuen Artikels schreibt mir der OXID in die folgenden Felder statt eines leeren Strings oder eines sinnvollen Wertes schlicht zwei einfache Anführungszeichen.  
_(Default Wert bei der MySQL-Tabelle kann ich ausschließen.)_

Betroffen sind aus der oxarticles die Felder: OXPARENTID, OXUNITNAME, OXEXTURL, OXURLDESC, OXURLIMG, OXTHUMB, OXICON, OXPIC1, OXPIC2, OXPIC3, OXPIC4, OXPIC5, OXPIC6, OXPIC7, OXPIC8, OXPIC9, OXPIC10, OXPIC11, OXPIC12 OXSTOCKTEXT, OXNOSTOCKTEXT, OXFILE, OXTEMPLATE, OXQUESTIONEMAIL, OXVARNAME, OXVARSELECT, OXBUNDLEID, OXFOLDER, OXAMITEMID, OXDELTIMEUNIT

Ihr könnt euch ja vorstellen, dass Frontend wie Backend gerade nicht willens sind einen solchen Artikel zu zeigen.

Habt ihr mir eine Idee, wer mir hier den bescheuerten Defaultwert schreibt?  
Merci!

Edit: Das scheint ne Art Kapselverhalten zu sein. Hab dem mal testweise 'nen Defaultwert mitgegeben auf der Datenbank und den Kapselt er jetzt auch in Anführungszeichen. Doof.

---

<div class="post-metadata">

**Author:** ![Sioweb](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/sioweb/32/775_2.png) [@Sioweb](https://forum.oxid-esales.com/u/Sioweb)\
**Post date:** [June 12, 2019, 1:45pm UTC](https://forum.oxid-esales.com/t/doppeltes-anfuhrungszeichen-statt-leerstring/95353/2 "2019-06-12T13:45:10Z")

</div>

Jo, das nervt. ich nutze dafür so ein SQL hier: [https://gist.github.com/Sioweb/0b229ecd6dfc4a7bb6a9fa1911d68e0f](https://gist.github.com/Sioweb/0b229ecd6dfc4a7bb6a9fa1911d68e0f)

Das markiert alle Felder als NULL(able) - allerdings habe ich nicht ausgibig getestet ob sich dadurch Probleme ergeben.

**Edit:** Soweit ich das sehe, wird dass durch Zeile [1332 in BaseModel](https://github.com/OXID-eSales/oxideshop_ce/blob/e05a99a3ea39e47508a12e0eb462bb4e2ec176d5/source/Core/Model/BaseModel.php#L1332) ausgelöst.`::quote` liefert bei NULL lediglich zwei Quotes zurück.

---

<div class="post-metadata">

**Author:** ![Jonas\_Hess](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/jonas_hess/32/1027_2.png) [@Jonas\_Hess](https://forum.oxid-esales.com/u/Jonas_Hess)\
**Post date:** [June 12, 2019, 2:00pm UTC](https://forum.oxid-esales.com/t/doppeltes-anfuhrungszeichen-statt-leerstring/95353/3 "2019-06-12T14:00:26Z")

</div>

Danke für die schnelle Antwort, Sioweb.

Nur leider gewöhnt das NULL-Erlauben ihm nicht das Kapseln ab.

… oh und das Hinterherupdaten will ich ja auch nicht jede Sekunde triggern.  
Ich würde gerne näher an die Ursache ran.

Vielleicht bringt die Datenbankversion neue Inspirationen.  
Ich bin hier nämlich auf einer _10.3.15-MariaDB-1:10.3.15+maria~bionic_ unterwegs.

edit: deinen edit muss ich mir noch anschauen, der schaut vielversprechender aus.

---

<div class="post-metadata">

**Author:** ![Sioweb](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/sioweb/32/775_2.png) [@Sioweb](https://forum.oxid-esales.com/u/Sioweb)\
**Post date:** [June 12, 2019, 2:04pm UTC](https://forum.oxid-esales.com/t/doppeltes-anfuhrungszeichen-statt-leerstring/95353/4 "2019-06-12T14:04:44Z")

</div>

Ah klar sorry - das SQL ist falsch - überall wo “NOT NULL” steht, muss natürlich “NULL” stehen 🙂 Ich habs noch mal aktualisiert.

---

<div class="post-metadata">

**Author:** ![Jonas\_Hess](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/jonas_hess/32/1027_2.png) [@Jonas\_Hess](https://forum.oxid-esales.com/u/Jonas_Hess)\
**Post date:** [June 12, 2019, 2:32pm UTC](https://forum.oxid-esales.com/t/doppeltes-anfuhrungszeichen-statt-leerstring/95353/5 "2019-06-12T14:32:07Z")

</div>

… Lösung in einer Zeile:  
im Base-Model:

> //…  
> $fieldValue = trim($fieldValue, “'”);  
> return $database-\>quote($fieldValue);  
> //…

Das Problem liegt wahrscheinlich irgendwo in den Datenbanktreiberunterschieden:  
[php-Doku zu pdo::quote](https://php.net/manual/de/pdo.quote.php)

---

<div class="post-metadata">

**Author:** ![Sioweb](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/sioweb/32/775_2.png) [@Sioweb](https://forum.oxid-esales.com/u/Sioweb)\
**Post date:** [June 12, 2019, 2:37pm UTC](https://forum.oxid-esales.com/t/doppeltes-anfuhrungszeichen-statt-leerstring/95353/6 "2019-06-12T14:37:12Z")

</div>

Evt. wäre die Zeile auch gut in der Klasse [Database](https://github.com/OXID-eSales/oxideshop_ce/blob/master/source/Core/Database/Adapter/Doctrine/Database.php#L422) aufgehoben. Dann würde das Problem vermutlich auch an anderen Stellen wo `::quote` verwendet wird nicht auftauchen.

---

<div class="post-metadata">

**Author:** ![Jonas\_Hess](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/jonas_hess/32/1027_2.png) [@Jonas\_Hess](https://forum.oxid-esales.com/u/Jonas_Hess)\
**Post date:** [June 12, 2019, 3:18pm UTC](https://forum.oxid-esales.com/t/doppeltes-anfuhrungszeichen-statt-leerstring/95353/7 "2019-06-12T15:18:23Z")

</div>

Guter Vorschlag.

- In dem Falle verriß es mir halt die Artikelneuerstellung, daher dieses Plätzchen für den Codeingriff.
- Vielleicht macht es ja auch manchmal Sinn, eine Quotation-Inception durchzuführen.
- Angefangen hat es heute mit Error-Logs von wegen er könne da was am Template nicht laden (lag am Eintrag in der oxtemplate-Spalte)
- Weiter gings mit Variantenkindern, die ihren Vater nicht gefunden haben und daher im Backend nicht wieder auffindbar waren (oxparentid)
- Jo und dann hab ich mich über die seltsamen doch SO nicht vereinbarten Defaultwerte gewundert.

Wie gesagt, vielleicht macht das Mehrfach-Verkapseln irgendwo Sinn und muss gar nicht generell unterdrückt werden. Bei den Defaultwerten war das aber heute echt ein kleines Mysterium.

Danke für deine Mithilfe, die mich doch schnell auf die richtige Spur gebracht hat.

---

<div class="post-metadata">

**Author:** ![poxid123](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/p/bb73d2/32.png) [@poxid123](https://forum.oxid-esales.com/u/poxid123)\
**Post date:** [June 24, 2019, 6:36am UTC](https://forum.oxid-esales.com/t/doppeltes-anfuhrungszeichen-statt-leerstring/95353/8 "2019-06-24T06:36:19Z")

</div>

Hallo,  
das Verhalten kommt von der Kombination Maria DB \>= 10.2.\* mit älteren Doctrine Versionen (2.5.\*).  
Ich hatte da auch mal im Bugtracker ein Ticket erstellt:  
[https://bugs.oxid-esales.com/view.php?id=6914](https://bugs.oxid-esales.com/view.php?id=6914)  
Aber wie gesagt, das ist kein Bug, sondern hängt mit den o.g. Versionen zusammen.

---

<div class="post-metadata">

**Author:** ![Lucksmith](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/lucksmith/32/1423_2.png) [@Lucksmith](https://forum.oxid-esales.com/u/Lucksmith)\
**Post date:** [July 22, 2019, 11:52am UTC](https://forum.oxid-esales.com/t/doppeltes-anfuhrungszeichen-statt-leerstring/95353/9 "2019-07-22T11:52:32Z")

</div>

Auch mit Doctrin 2.7.2 tritt dieser Fehler auf.

---

<div class="post-metadata">

**Author:** ![Maximde](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/m/bcef8e/32.png) [@Maximde](https://forum.oxid-esales.com/u/Maximde)\
**Post date:** [August 1, 2019, 6:44pm UTC](https://forum.oxid-esales.com/t/doppeltes-anfuhrungszeichen-statt-leerstring/95353/10 "2019-08-01T18:44:36Z")

</div>

Könnte bitte jemand eine einigermaßen ausführliche Beschreibung machen um diesen “Fehler” zu beheben? Ich habe die Änderungen am Core vorgenommen, leider ist der “Fehler” damit nicht behoben.  
Eine “Core” Aktualisierung muss man nicht machen, wenn man etwas verändert hat, oder? Bin leider neu im Thema Oxid.

Danke vorab!

---

<div class="post-metadata">

**Author:** ![Sioweb](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/sioweb/32/775_2.png) [@Sioweb](https://forum.oxid-esales.com/u/Sioweb)\
**Post date:** [August 2, 2019, 6:14am UTC](https://forum.oxid-esales.com/t/doppeltes-anfuhrungszeichen-statt-leerstring/95353/11 "2019-08-02T06:14:23Z")

</div>

Also. Oxid prüft ob ein Feld NULL sein darf, also dass das Feld leer sein darf. NOT NULL Felder erwarten zwingend einen Wert und je nach Datenbanktreiber gibt die Funktion PDO::quote zwei einfache Anführungszeichen (Singlequotes) zurück. Oxid speichert den Wert in die Datenbank.

Um das zu umgehen gibt es zwei - wirklich sehr unintelligente - Lösungen:

- Alle Felder auf NULL stellen und die bereits gespeicherten Singlequotes aus den Zeilen entfernen
- Den Core bearbeiten

Punkt zwei ist klar nicht Updatesicher. Nach einer Aktualisierung sind die Daten wieder weg.  
Punkt eins ist in soweit nicht intelligent, weil wenn ein Feld nicht NULL sein darf, muss man dort etwas reinspeichern, da sonst unter Umständen der Ablauf gestört werden könnte, weil zur Berechnung gewisser Daten eben alle Daten vorhanden sein müssen.

Es muss nach der Anpassung in der Datenbank auf jeden Fall getestet werden.

Mir fallen dazu zwei mögliche Lösungen ein:

- Oxid übernimmt die Core-Anpassung von Jonas
- Von MariaDB auf MySQL wechseln

Allerdings weiß ich nicht wie MySQL damit umgehen wird, wenn NULL Felder ohne Werte abgespeichert werden.

---

<div class="post-metadata">

**Author:** ![Maximde](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/m/bcef8e/32.png) [@Maximde](https://forum.oxid-esales.com/u/Maximde)\
**Post date:** [August 2, 2019, 9:02pm UTC](https://forum.oxid-esales.com/t/doppeltes-anfuhrungszeichen-statt-leerstring/95353/12 "2019-08-02T21:02:48Z")

</div>

Guten Abend,

vielen Dank für die Erklärung.  
Beide Änderungen wurden soeben auf einer frisch installierten Instanz ausgeführt - leider ohne Erfolg. Weiterhin wie Artikel falsch in die Datenbank übergeben.

Meine letzte Hoffnung wäre der Wechsel von MariaDB auf MySQL.

---

<div class="post-metadata">

**Author:** ![tabsl](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/tabsl/32/2468_2.png) [@tabsl](https://forum.oxid-esales.com/u/tabsl)\
**Post date:** [May 24, 2021, 7:33am UTC](https://forum.oxid-esales.com/t/doppeltes-anfuhrungszeichen-statt-leerstring/95353/13 "2021-05-24T07:33:09Z")

</div>

Hier gibts ne Anleitung wie man den Patch auch in frühere Versionen einspielen kann: [Applying patches to OXID eShop projects with composer](https://oxidforge.org/en/applying-patches-to-oxid-eshop-projects-with-composer.html)

---

<div class="post-metadata">

**Author:** ![system](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/system/32/4245_2.png) [@system](https://forum.oxid-esales.com/u/system)\
**Post date:** [July 13, 2026, 8:34pm UTC](https://forum.oxid-esales.com/t/doppeltes-anfuhrungszeichen-statt-leerstring/95353/14 "2026-07-13T20:34:25Z")

</div>


