Heim >Backend-Entwicklung >PHP-Tutorial >Lösung dafür, warum Texttypfelder in MSSQL-Datenbanken in PHP abgeschnitten werden
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 Eine dumme Idee, da beim Senden von Daten alle Zeichenfolgeninhalte an die Datenbank übermittelt werden können, dieses Phänomen jedoch nur beim Lesen auftritt. Deshalb habe ich online gesucht, 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 Die Standardkonfiguration beträgt 4096 Bytes, die oft 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.
Anhand der beiden oben genannten Optionen können Sie erkennen, dass der Bereich zwischen 0 und 2147483647 Byte liegt.
if(MS_SQL_G(textlimit)!=-1){
sprintf(buffer,"%li ",MS_SQL_G(textlimit));
if(DBSETOPT(mssql.Link,DBTEXTLIMIT,Puffer)== 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,Puffer);
dbqlexec(mssql.Link );
dbresults(mssql.link);
}
2. In PHP Führen Sie SET TEXTSIZE aus, bevor Sie die SELECT-Abfrage ausführen in:
mssql_query("SETTEXTSIZE65536" );
Wie Sie dem obigen PHP-Quellcode entnehmen können, wird auch SET TEXTSIZE ausgeführt.
Wenn das oben Gesagte nicht funktioniert, können Sie versuchen, die CAST-Funktion in der Abfrageanweisung zu verwenden.
Das Obige stellt die Lösung für das Problem vor, dass Textfelder in MSSQL-Datenbanken in PHP abgeschnitten werden, einschließlich des Inhalts des PHP-Frameworks. Ich hoffe, dass es für Freunde hilfreich sein wird, die an PHP-Tutorials interessiert sind.