<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 코드 의이 부분은 기사의 내용과 관련이 없습니다.,분리 전에 콘텐츠를 표시하는 데만 사용됩니다</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"이 기사를 읽을 수 있습니다,이 기사는 자세히 설명 할 것입니다 PDOStatement::getColumnMeta 기능 사용。"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?php</span></span><span>
<span class="hljs-comment">/*
* 통과하는 방법 PDOStatement::getColumnMeta 데이터베이스 열 이름 및 데이터 유형을 정확하게 가져 오는 기능?
*
* 사용 중 PHP ~의 PDO 데이터베이스 작업을 확장 할 때,获取查询结果~의元数据非常重要,특히 동적으로 생성 테이블 구조에서、데이터를 내보내거나 확인할 때。
* PDOStatement::getColumnMeta 예 PDO 提供~의하나个방법,用于获取结果集中指定列~의元信息,열 이름을 얻도록 도와줍니다、데이터 유형 및 기타 정보。
*
* 하나、기능 소개
* PDOStatement::getColumnMeta(int $column) :
* - 매개 변수 $column 예列~의索引(~에서0시작)。
* - 返回值예하나个关联数组,包含该列~의元数据,열 이름으로(name)、데이터 유형(native_type)、길이(len)、예否允许 NULL(flags)기다리다。
*
* 둘、사용의 예
* 아래는 다음과 같습니다 MySQL 예로,演示통과하는 방법 PDOStatement::getColumnMeta 열 이름을 얻으십시오그리고데이터 유형。
*/</span>
</span><span><span class="hljs-keyword">try</span></span><span> {
</span><span><span class="hljs-variable">$dsn</span></span><span> = </span><span><span class="hljs-string">"mysql:host=localhost;dbname=testdb;charset=utf8mb4"</span></span><span>;
</span><span><span class="hljs-variable">$username</span></span><span> = </span><span><span class="hljs-string">"root"</span></span><span>;
</span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-string">""</span></span><span>;
</span><span><span class="hljs-variable">$options</span></span><span> = [
PDO::</span><span><span class="hljs-variable constant_">ATTR_ERRMODE</span></span><span> => PDO::</span><span><span class="hljs-variable constant_">ERRMODE_EXCEPTION</span></span><span>,
];
</span><span><span class="hljs-variable">$pdo</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">PDO</span></span><span>(</span><span><span class="hljs-variable">$dsn</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$options</span></span><span>);
</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"SELECT id, username, email, created_at FROM users LIMIT 1"</span></span><span>;
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>);
</span><span><span class="hljs-variable">$columnCount</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">columnCount</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"테이블 필드 정보:\n"</span></span><span>;
</span><span><span class="hljs-keyword">for</span></span><span> (</span><span><span class="hljs-variable">$i</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span> < </span><span><span class="hljs-variable">$columnCount</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span>++) {
</span><span><span class="hljs-variable">$meta</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getColumnMeta</span></span><span>(</span><span><span class="hljs-variable">$i</span></span><span>);
</span><span><span class="hljs-comment">// 열 이름을 얻으십시오</span></span><span>
</span><span><span class="hljs-variable">$columnName</span></span><span> = </span><span><span class="hljs-variable">$meta</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>] ?? </span><span><span class="hljs-string">'알 수없는 열 이름'</span></span><span>;
</span><span><span class="hljs-comment">// 获取数据库原生데이터 유형</span></span><span>
</span><span><span class="hljs-variable">$nativeType</span></span><span> = </span><span><span class="hljs-variable">$meta</span></span><span>[</span><span><span class="hljs-string">'native_type'</span></span><span>] ?? </span><span><span class="hljs-string">'알 수없는 유형'</span></span><span>;
</span><span><span class="hljs-comment">// 有些数据库返回~의字段길이信息</span></span><span>
</span><span><span class="hljs-variable">$length</span></span><span> = </span><span><span class="hljs-variable">$meta</span></span><span>[</span><span><span class="hljs-string">'len'</span></span><span>] ?? </span><span><span class="hljs-string">'未知길이'</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"열 색인 <span class="hljs-subst">{$i}</span></span></span><span>: 이름 = </span><span><span class="hljs-subst">{$columnName}</span></span><span>, 유형 = </span><span><span class="hljs-subst">{$nativeType}</span></span><span>, 길이 = </span><span><span class="hljs-subst">{$length}</span></span><span>\n";
}
} </span><span><span class="hljs-keyword">catch</span></span><span> (PDOException </span><span><span class="hljs-variable">$e</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"데이터베이스 오류: "</span></span><span> . </span><span><span class="hljs-variable">$e</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>();
}
<span class="hljs-comment">/*
* 삼、주목해야 할 것
* 1. 不同数据库驱动返回~의元数据字段可能有所不同,실제 상황에 따라 처리해야합니다。
* 2. getColumnMeta 仅对已经执行~의查询有效,일부 드라이버는이 기능을 완전히 지원하지 않습니다。
* 3. native_type 예数据库驱动返回~의原生유형,그리고 PHP 유형不完全对应,변환 해야하는 경우 직접 매핑하십시오。
*
* 네、요약
* 통과하다 PDOStatement::getColumnMeta,可以方便地获取查询结果~의列名그리고데이터 유형,增强程序~의动态处理能力。
* 결합 columnCount 방법,모든 필드 정보는 가로 질 수 있습니다,实现更灵活~의数据库操作。
*/</span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
관련 태그:
PDOStatement