Heim > Backend-Entwicklung > PHP-Tutorial > Lösung dafür, warum Texttypfelder in MSSQL-Datenbanken in PHP abgeschnitten werden

Lösung dafür, warum Texttypfelder in MSSQL-Datenbanken in PHP abgeschnitten werden

巴扎黑
Freigeben: 2016-11-10 10:07:40
Original
1472 Leute haben es durchsucht

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);
}
Nach dem Login kopieren

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.


Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage