PHP에서는 MSSQL 데이터베이스를 사용했는데, 데이터베이스에서 Text형 필드를 사용하는 일이 발생하여 문제가 발생했습니다. 데이터베이스에서 데이터를 쿼리할 때마다 설명할 수 없을 정도로 항상 잘립니다. 처음에는 제가 사용한 PHP 프레임워크에 문자열 길이에 제한이 있는 줄 알았습니다. 어리석은 생각입니다. 데이터를 제출할 때 모든 문자열 내용을 데이터베이스에 제출할 수 있지만 이러한 현상은 읽을 때만 발생하므로 비슷한 문제가 있는지 온라인으로 검색했습니다. 운이 좋게도 첫 번째 검색에서 해결책을 찾았기 때문에 저 자신과 대부분의 PHP 애호가들의 가끔 필요에 따라 제 블로그에 다시 게시하기로 결정했습니다.
다음과 같은 두 가지 해결 방법이 있습니다.
1. 이를 달성하기 위해 php.ini를 수정합니다.
php.ini를 열면 mssql.textsize 및 mssql.textlimit의 두 가지 옵션이 표시됩니다.
; 유효한 범위는 0 - 2147483647. 기본값 = 4096.
;mssql.textlimit = 4096
; 유효한 범위는 0 - 2147483647. 기본값 = 4096.
;mssql.textsize = 4096
기본 구성은 4096바이트이며 종종 4K로 잘립니다. 적절한 크기로 변경하고 앞에 있는 세미콜론을 제거한 다음 웹 서버를 저장하고 다시 시작합니다.
위의 두 가지 옵션을 보면 범위가 0 - 2147483647바이트임을 알 수 있습니다.
if(MS_SQL_G(textlimit)!=-1){
sprintf(버퍼,"%li ",MS_SQL_G(textlimit));
if(DBSETOPT(mssql.링크,DBTEXTLIMIT,버퍼)== 실패){
efree(hashed_details);
dbfreelogin(mssql.login);
RETURN_FALSE;
}
}
if(MS_SQL_G(textsize)!=-1){
sprintf(버퍼,"SETTEXTSIZE%li",MS_SQL_G(textsize));
dbcmd(mssql .링크,버퍼);
dbsqlexec(mssql.링크 );
dbresults(mssql.link);
}
2. PHP에서 다음에서 SELECT 쿼리를 실행하기 전에 SET TEXTSIZE를 실행하세요.
mssql_query("SETTEXTSIZE65536" );
위 PHP 소스코드를 보면 알 수 있듯이 SET TEXTSIZE도 실행된다.
위의 방법으로도 문제가 해결되지 않으면 쿼리문에서 CAST 함수를 사용해 볼 수 있습니다.
위 내용은 PHP 프레임워크의 내용을 포함하여 MSSQL 데이터베이스의 텍스트 유형 필드가 PHP에서 잘리는 문제에 대한 해결책을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.