So, nach 3 Stunden erfolglosen Googlens frage ich hier mal nach, ob vielleicht noch jemand ein ähnliches Problem hat/hatte und vielleicht sogar gelöst hat…
Situation: Das Feld „internalcomment“ soll mit anderen Informationen aus der Tabelle „s_order“ ausgelesen werden.
Das klingt unspektakulär, aber sobald das Statement nicht mehr über ein Frontend (PHP-Admin/HeidiSQL/Konsole), sondern per PHP ausgeführt wird, erhält man nur noch ein leeres Ergebnis.
Datenbank:
Statement:
Ergebnis:
Ich habe die Datenbankfelder schon versucht von MEDIUMTEXT zu TEXT zu ändern, das hat aber auch nicht geholfen…
Es ist für mich unerklärlich, weshalb ausgerechnet das Feld „internalcomment“ leer zurückgegeben wird.
Wäre schön wenn jemand dieses Verhalten noch aufklären könnte, vorübergehend habe ich einen absolut bescheuerten Workaround gefunden…
SELECT so.*, su.*,scs.*, sccv.value, concat('',so.internalcomment) as internalcomment FROM s_order so
Wozu so ein concat gut sein kann…
Völlig normales Verhalten. Wenn du die Zeile als assoziatives Array holst gewinnt bei Namensgleichheit das letzte Feld mit diesem Namen, in dem Fall su.internalcomment aus s_user. Einer der Gründe, warum man nicht so viel mit * auf die Datenbank draufballern sollte.
Dein concat würde auch ohne concat funktionieren, weil es dadurch zum letzten Feld mit diesem Namen wird.
Matt
Das wäre möglich, allerdings hatte ich es mit einem zusätzlichen so.internalcomment am Ende versucht und das wollte nicht funktionieren.
Leider benötige ich ca. 60% aller Felder aus den betroffenen Tabellen, die alle Aufzulisten im Select wäre wahnsinn…
Also hier in nem Testaufbau funkioniert
select so.*, su.*, scs.*, sccv.value, so.internalcomment from
wie erwartet. Alternativ kannst du dir das Feld natürlich auf was anderes aliasen um dem Problem aus dem Weg zu gehen (gleiches gilt für alle anderen doppelten Felder natürlich auch).
select so.*, su.*, scs.*, sccv.value, so.internalcomment intcom_order from
Matt
1 „Gefällt mir“