MSSQL-Datenbank wurde in PHP verwendet und es kam vor, dass Felder vom Typ Text in der Datenbank verwendet wurden, sodass das Problem auftrat. Jedes Mal, wenn ich die Daten aus der Datenbank abfrage, werden sie aus unerklärlichen Gründen abgeschnitten. Zuerst dachte ich, dass das von mir verwendete PHP-Framework eine Begrenzung der Länge der Zeichenfolge hat. Später stellte ich fest, dass dies eine dumme Idee war, denn beim Senden In den Daten könnte ich den gesamten String-Inhalt an die Datenbank senden, aber dieses Phänomen tritt nur beim Lesen auf, also habe ich online gesucht, um zu sehen, ob es ähnliche Probleme gibt. Ich hatte das Glück, die Lösung bei meiner ersten Suche zu finden, also beschloss ich, sie für den gelegentlichen Bedarf von mir selbst und der Mehrheit der PHP-Enthusiasten erneut auf meinem Blog zu veröffentlichen.
Es gibt zwei Lösungen:
1. Ändern Sie php.ini, um dies zu erreichen:
Öffnen Sie php.ini. Sie sehen zwei Optionen: mssql.textsize und mssql.textlimit:
; Gültiger Bereich 0 - 2147483647. Standard = 4096.
;mssql.textlimit = 4096
; Gültiger Bereich 0 - 2147483647. Standard = 4096.
;mssql.textsize = 4096
Sie können sehen, dass die Standardkonfiguration 4096 Byte beträgt, die häufig auf 4 KB gekürzt wird. Ändern Sie sie auf eine geeignete Größe, entfernen Sie das Semikolon davor, speichern Sie dann den WEB-Server und starten Sie ihn neu.
Aus den beiden oben genannten Optionen können Sie ersehen, dass der Bereich 0 - 2147483647 Bytes beträgt.
if(MS_SQL_G(textlimit)!=-1){ sprintf(buffer,"%li",MS_SQL_G(textlimit)); if(DBSETOPT(mssql.link,DBTEXTLIMIT,buffer)==FAIL){ efree(hashed_details); dbfreelogin(mssql.login); RETURN_FALSE; } } if(MS_SQL_G(textsize)!=-1){ sprintf(buffer,"SETTEXTSIZE%li",MS_SQL_G(textsize)); dbcmd(mssql.link,buffer); dbsqlexec(mssql.link); dbresults(mssql.link); }
2. Führen Sie SET TEXTSIZE aus, bevor Sie die SELECT-Abfrage in PHP ausführen:
mssql_query("SETTEXTSIZE65536");
Wie aus dem PHP-Quellcode ersichtlich ist oben Tatsächlich wird auch SET TEXTSIZE ausgeführt.
Wenn das oben Gesagte nicht funktioniert, können Sie versuchen, die CAST-Funktion in der Abfrageanweisung zu verwenden.