[PHP4 -> PHP 5] Angehängte Leerzeichen bei Char Feldern

[PHP4 -> PHP 5] Angehängte Leerzeichen bei Char Feldern

am 10.08.2005 13:39:19 von gelmann

Hallo,

Ich habe eine Internetseite, die in PHP4 entwickelt wurde und als
Datenbank einen MSSQL 2000 benutzt (kann auch 2003 sein, da bin ich
nicht so sicher).
Nun wollte ich die Seite nach PHP5 portieren. Dabei bin ich auf einen
blöden "Fehler" gestossen. Ich habe einige Felder in der Datenbank die
als Datentyp char sind. Diese werden in PHP5 immer mit der vollen
Länge zurückgegeben, will sagen: in dem Feld Name char(50) steht
"Gunther" drin, dann bekomme ich "Gunther(aufgefüllt mit
Leerzeichen)". Das verkraften allerdings einige Abfragen in den
Skripten nicht.
Gibt es nicht eine Einstellung, die angehängte Leerzeichen einfach
abschneidet, so wie das bei PHP 4 auch war?

Vielen Dank für euere Hilfe.
Gunther

Re: [PHP4 -> PHP 5] Angehängte Leerzeichen bei Char Feldern

am 10.08.2005 15:42:41 von Niels Braczek

gelmann schrieb:
^^^^^^^
Hier gehören dein Vor- und Nachname hin.

> Nun wollte ich die Seite nach PHP5 portieren. Dabei bin ich auf einen
> blöden "Fehler" gestossen. Ich habe einige Felder in der Datenbank die
> als Datentyp char sind. Diese werden in PHP5 immer mit der vollen
> Länge zurückgegeben, will sagen: in dem Feld Name char(50) steht
> "Gunther" drin, dann bekomme ich "Gunther(aufgefüllt mit
> Leerzeichen)". Das verkraften allerdings einige Abfragen in den
> Skripten nicht.
> Gibt es nicht eine Einstellung, die angehängte Leerzeichen einfach
> abschneidet, so wie das bei PHP 4 auch war?

Wenn du das willst, ist der Datentyp CHAR falsch; du suchst VARCHAR.
Ansonsten steht dir trim() zur Verfügung.

MfG
Niels

--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
`----------------------------------------------------------- -----´

Re: Angehängte Leerzeichen bei Char Feldern

am 10.08.2005 15:56:21 von gelmann

Ja, .. ähm, .. Sorry wegen dem Namen, soll nicht wieder vorkommen

Das Problem ist, dass die Datenbank schon besteht (nicht von mir
erstellt) und nicht so ohne weiteres geändert werden kann. Ich dachte
es gibt irgendwo eine Einstellung, wo man dem Server mitteilen kann,
dass er das automatisch abschneidet.
Das mit dem trim(), hat den Nachteil, dass ich in jedem Skript die
Stellen suchen muß und dort das trim() Einbauen und dann noch testen.
Deshalb wäre mir eine globale Lösung lieber, ich meine in PHP4 war es
ja auch anders.=20

Gruß
Gunther Elmann

Re: Angehängte Leerzeichen bei Char Feldern

am 10.08.2005 16:39:28 von Thomas Hamacher

gelmann schrieb:
> Ja, .. ähm, .. Sorry wegen dem Namen, soll nicht wieder vorkommen

Warum änderst du ihn dann nicht, *bevor* du antwortest? Kann doch nicht
so schwer sein. Bitte lies zudem , wenn du hier
(von mir) weiter gelesen werden willst.

> Das Problem ist, dass die Datenbank schon besteht (nicht von mir
> erstellt) und nicht so ohne weiteres geändert werden kann. Ich dachte
> es gibt irgendwo eine Einstellung, wo man dem Server mitteilen kann,
> dass er das automatisch abschneidet.

Möglich, aber was hat das mit PHP zutun?

> Das mit dem trim(), hat den Nachteil, dass ich in jedem Skript die
> Stellen suchen muß und dort das trim() Einbauen und dann noch testen.
> Deshalb wäre mir eine globale Lösung lieber, ich meine in PHP4 war es
> ja auch anders.

Hmm, vielleicht liegt es einer Konfigurationseinstellung der
mssql-Erweiterung. Vergleiche mal die relevanten Stellen beider php.ini
Dateien. Das einzige, was mir in diesem Zusammenhang jedoch einfällt ist
der Kompatibilitätsmodus (mssql.compatability_mode), der aber eigentlich
immer deaktiviert ist.