mysql_field_type ()는 SQL에서 일반적으로 사용하는 필드 유형 ( int , varchar 등)이 아니지만 내부 처리를 위해 MySQL에서 사용되는 필드 유형을 반환합니다. 예를 들어, int 유형 필드는 길이를 반환 할 수 있고 Varchar 유형은 문자열을 반환 할 수 있습니다. 표준 SQL 유형의 필드를 얻으려면 추가 매핑을 수행하거나 다른 방식으로 얻어야 할 수도 있습니다.
<pable>의 Show Fields를 사용하거나 <pable>을 설명하여 필드 유형에 대한 자세한 정보를 얻을 수 있습니다. 또한 mysql_field_type () 에서 반환 된 유형과 실제 SQL 유형을 매핑하기 위해 유형 맵 배열을 수동으로 유지할 수도 있습니다.
MySQL_Field_type ()를 사용하여 필드 유형을 얻을 때 때때로 멀티 바이트 문자 세트가 발생합니다. MySQL 멀티 바이트 문자 세트 (예 : UTF8MB4 )를 처리 할 때 일부 필드는 일반 문자 세트의 필드와 다른 유형을 가질 수 있습니다. 이 차이는 특히 텍스트 또는 바르 숯 유형 필드를 다룰 때 필드 유형의 판단에서 편향을 유발할 수 있습니다.
테이블을 작성할 때 문자 세트를 식별하거나 쿼리 할 때 세트 이름을 사용하여 문자 세트가 일관되게하고 다른 문자 세트로 인해 필드 유형 인식 오류를 줄입니다.
mysql_field_type ()를 사용하여 필드 유형을 얻는 경우, 함수는 필드가 널 값을 허용하는지 또는 필드 기본값을 자동으로 고려하지 않습니다. 즉, 필드의 원시 유형 만 얻을 수 있으며 NULL을 허용하는지 또는 기본값이 무엇인지 알 수 없습니다.
더 많은 필드 속성 정보가 필요한 경우 (예 : NULL 또는 기본값이 허용되는지) 설명 또는 표시 열 문을 사용하여 필드의 자세한 설명 정보를 얻을 수 있습니다. 이 방법은보다 완전한 필드 정보를 제공 할 수 있습니다.
mysql_field_type () 함수는 쿼리 결과 세트가 비어 있거나 데이터베이스 연결이 비정상적인 경우와 같은 경우에 따라 거짓을 반환 할 수 있습니다. 적절한 오류 확인이 수행되지 않으면 반환 값을 직접 사용하면 프로그램이 충돌하거나 버그를 감지하기가 어려울 수 있습니다.
mysql_field_type ()를 호출 한 후에는 항상 반환 값이 False 인지 확인하고 상황에 따라 오류를 처리해야합니다. 예를 들어:
<span><span><span class="hljs-variable">$type</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysql_field_type</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>, </span><span><span class="hljs-variable">$fieldIndex</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$type</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-comment">// 처리 오류</span></span><span>
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'Failed to fetch field type.'</span></span><span>);
}
</span></span>MySQL 드라이버의 다른 버전으로 인해 MySQL_Field_type ()가 다른 필드 유형을 반환 할 수 있습니다. 일부 이전 버전에서는 MySQL_Field_type ()가 반환 한 필드 유형이 최신 MySQL 버전과 호환되지 않을 수 있습니다. 따라서 다른 개발 환경이나 생산 환경에서 다른 버전의 MySQL을 사용하는 경우 불일치가있을 수 있습니다.
개발 환경 및 생산 환경이 동일한 MySQL 드라이버 버전을 사용하는지 확인하십시오. PDO 또는 MySQLI로 다른 버전 간의 호환성을 고려해야하는 경우 이러한 확장은보다 일관된 인터페이스와 더 풍부한 기능을 제공합니다.
MySQL_Field_type () 함수는 PHP 5.5.0에서는 더 이상 사용되지 않은 것으로 표시되어 PHP 7.0.0에서 완전히 제거되었습니다. 이 기능은 특히 새로운 PHP 버전을 사용할 때 호환되지 않는 상황을 사용할 수 있습니다.
MySQL 확장 대신 PDO 또는 MySQLI를 사용하는 것이 좋습니다. PDO와 MySQLI는보다 유연하고 안전한 데이터베이스 작동 방법을 제공하고 더 많은 기능을 지원합니다. 예를 들어, MySQLI를 사용하여 필드 유형을 얻는 방법은 다음과 같습니다.
<span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"SELECT * FROM your_table"</span></span><span>);
</span><span><span class="hljs-variable">$field_info</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch_fields</span></span><span>();
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$field_info</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$val</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$val</span></span><span>->type; </span><span><span class="hljs-comment">// 인쇄 필드 유형</span></span><span>
}
</span></span>