3 Stimmen

Der von SQL Server zurückgegebene Spaltenname wurde mit PHP auf 29 Zeichen abgeschnitten

Ich habe eine SQL Server-Abfrage, die ich das Ergebnis aus und fügen Sie in ein Array wie

while($row = mssql_fetch_array($res, MSSQL_ASSOC)) { ... }

Das Problem ist nun, dass die Betrachtung der $row Ich sehe, dass die Spalte mit dem Namen customer_social_sequrity_number wird der Schlüssel customer_social_sequrity_numbe . Alle anderen Tasten scheinen auf 29 Zeichen begrenzt zu sein. Ist dies ein Limit? Ich kann keine Informationen über eine solche Begrenzung finden.

Dies ist ein bisschen ein Drag, da ich Daten aus einer 3rd-Party-Datenbank importieren und den Schlüssel des Arrays verwenden, um die Daten zu einem Objekt zuzuordnen.

Es scheint sich nicht um eine Einschränkung auf der PHP-Seite zu handeln, wie angegeben. Handelt es sich möglicherweise um eine Einschränkung auf Seiten des SQL-Servers? Ausführen der Abfrage mit MS Query Analyzer Es scheint in Ordnung zu sein.

6voto

inquam Punkte 12256

Ich habe die Antwort auf diese Frage gefunden. Es scheint, dass unter Windows die DBLIB von Microsoft verwendet wird und dass Funktionen, die einen Spaltennamen zurückgeben, auf der Funktion dbcolname() in der DBLIB basieren. DBLIB wurde offenbar für SQL Server 6 entwickelt, wo die maximale Länge eines Spaltennamens 30 betrug. Aus diesem Grund beträgt die maximale Spaltenlänge 30 Zeichen.

Hier können Sie eine Version von FreeTDS für Windows herunterladen, die dieses Problem hoffentlich behebt: http://docs.moodle.org/en/Installing_MSSQL_for_PHP#Using_FreeTDS_on_Windows

Auch unter Linux stellt dies kein Problem dar, sondern betrifft nur Windows.

1voto

Nanne Punkte 63372

Dies: Was ist die maximale Schlüsselgröße für ein Array in PHP? scheint zu implizieren, dass Sie keine Probleme mit einem PHP-Array-Schlüssel-Limit haben

-1voto

fire Punkte 20965
  1. Vergewissern Sie sich, dass die Spalte in Ihrer Datenbank auf jeden Fall den Namen customer_social_sequrity_number und wird nicht abgeschnitten
  2. Prüfen Sie, ob es sich um den Schlüssel und nicht um den Wert des Arrays handelt. Wenn es sich um den Wert handelt, handelt es sich um Daten und nicht um Spaltennamen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X