<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Dieser Teil des Codes hat nichts mit dem Inhalt des Artikels zu tun,Nur zur Anzeige von Inhalten vor der Trennung verwendet</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Willkommen, um diesen Artikel zu lesen,Dieser Artikel wird ausführlich erklären PDOStatement::getColumnMeta Verwendung von Funktionen。"</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">/*
* Wie man passt PDOStatement::getColumnMeta Funktionen, um Datenbankspaltennamen und Datentypen genau zu erhalten?
*
* Im Einsatz PHP von PDO Beim Erweiterung des Datenbankvorgangs,获取查询结果von元数据非常重要,Vor allem bei dynamischen Erzeugung von Tabellenstrukturen、Beim Exportieren oder Überprüfen von Daten。
* PDOStatement::getColumnMeta Ja PDO 提供voneins个Verfahren,用于获取结果集中指定列von元信息,Helfen Sie uns, Spaltennamen zu erhalten、Datentyp und andere Informationen。
*
* eins、Funktion Einführung
* PDOStatement::getColumnMeta(int $column) :
* - Parameter $column Ja列von索引(aus0Start)。
* - 返回值Jaeins个关联数组,包含该列von元数据,Als Spaltenname(name)、Datentyp(native_type)、Länge(len)、Ja否允许 NULL(flags)Warten。
*
* zwei、Beispiel für die Nutzung
* Unten ist MySQL Als Beispiel,演示Wie man passt PDOStatement::getColumnMeta Spaltenname abrufenUndDatentyp。
*/</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">"Tabellenfeldinformationen:\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">// Spaltenname abrufen</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">'Unbekannter Spaltenname'</span></span><span>;
</span><span><span class="hljs-comment">// 获取数据库原生Datentyp</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">'Unbekannter Typ'</span></span><span>;
</span><span><span class="hljs-comment">// 有些数据库返回von字段Länge信息</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">'未知Länge'</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Spaltenindex <span class="hljs-subst">{$i}</span></span></span><span>: Name = </span><span><span class="hljs-subst">{$columnName}</span></span><span>, Typ = </span><span><span class="hljs-subst">{$nativeType}</span></span><span>, Länge = </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">"Datenbankfehler: "</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">/*
* drei、Dinge zu beachten
* 1. 不同数据库驱动返回von元数据字段可能有所不同,Müssen gemäß der tatsächlichen Situation behandelt werden。
* 2. getColumnMeta 仅对已经执行von查询有效,Und einige Fahrer unterstützen diese Funktion nicht vollständig。
* 3. native_type Ja数据库驱动返回von原生Typ,Und PHP Typ不完全对应,Wenn Sie konvertieren müssen, kartieren Sie es bitte selbst。
*
* Vier、Zusammenfassen
* passieren PDOStatement::getColumnMeta,可以方便地获取查询结果von列名UndDatentyp,增强程序von动态处理能力。
* Kombiniert columnCount Verfahren,Alle Feldinformationen können durchquert werden,实现更灵活von数据库操作。
*/</span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Verwandte Tags:
PDOStatement