mysql_field_type () gibt nicht die Feldtypen zurück, die wir üblicherweise in SQL (wie int , varchar usw.) verwenden, sondern die in MySQL verwendeten Feldtypen für die interne Verarbeitung zurück. Beispielsweise kann ein Feld vom Typ INT eine lange zurückgeben, und ein Varchar -Typ kann eine Zeichenfolge zurückgeben. Wenn Sie den Standard -SQL -Typ des Feldes erhalten möchten, müssen Sie möglicherweise zusätzliche Zuordnung durchführen oder auf andere Weise erhalten.
Sie können Show Felder von <tabelle> verwenden oder <Tabelle> beschreiben, um detaillierte Informationen zum Feldtyp zu erhalten. Sie können auch ein Typ -Map -Array manuell verwalten, um die von MySQL_Field_Type () und dem tatsächlichen SQL -Typ zurückgegebenen Typen abzubilden.
Wenn Sie mySQL_field_type () verwenden, um Feldtypen zu erhalten, begegnen Sie manchmal auf einen Multibyte -Zeichensatz. MySQL Bei Multibyte -Zeichensätzen (wie UTF8MB4 ) können einige Felder unterschiedliche Typen haben als die unter normalen Zeichensätzen. Dieser Unterschied kann eine Verzerrung des Urteils von Feldtypen verursachen, insbesondere wenn es sich um Text- oder Varchar -Felder handelt.
Identifizieren Sie den Zeichensatz beim Erstellen einer Tabelle oder verwenden Sie festgelegte Namensnamen, um sicherzustellen, dass der Zeichensatz konsistent ist, und reduzieren Sie die Erkennungsfehler der Feldtyp aufgrund unterschiedlicher Zeichensätze.
Wenn Sie MySQL_Field_Type () verwenden, um den Feldtyp zu erhalten, wird die Funktion nicht automatisch prüfen, ob das Feld Nullwerte zulässt, und die Feldstandwerte auch nicht. Dies bedeutet, dass Sie nur die primitive Art des Feldes erhalten und nicht sagen können, ob es NULL ermöglicht oder wie sein Standardwert ist.
Wenn mehr Feldattributinformationen benötigt werden (z. B. ob Null- oder Standardwerte zulässig sind), können Sie die Anweisung Beschreibung oder Zeigen von Spalten verwenden, um detaillierte Beschreibungsinformationen des Feldes zu erhalten. Diese Methoden können vollständigere Feldinformationen liefern.
Die Funktion von MySQL_Field_Type () kann in einigen Fällen false zurückgeben, z. Wenn keine ordnungsgemäße Fehlerprüfung durchgeführt wird, kann die Verwendung des Return -Werts direkt zum Absturz oder zur Erkennung von Fehlern zu tun.
Nach dem Aufrufen von MySQL_Field_Type () sollte es immer prüfen, ob sein Rückgabewert falsch ist, und den Fehler gemäß der Situation zu bewältigen. Zum Beispiel:
<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">// Handhabungsfehler</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>Verschiedene Versionen von MySQL -Treibern können dazu führen, dass MySQL_Field_Type () verschiedene Feldtypen zurückgibt. In einigen älteren Versionen sind die von MySQL_Field_Type () zurückgegebenen Feldtypen möglicherweise nicht mit der neuesten MySQL -Version kompatibel. Wenn Sie daher verschiedene Versionen von MySQL in verschiedenen Entwicklungsumgebungen oder Produktionsumgebungen verwenden, gibt es möglicherweise einige Inkonsistenzen.
Versuchen Sie sicherzustellen, dass die Entwicklungsumgebung und die Produktionsumgebung dieselbe MySQL -Treiberversion verwenden. Wenn die Kompatibilität zwischen verschiedenen Versionen mit PDO oder MySQLI berücksichtigt werden muss, bieten diese Erweiterungen konsistentere Schnittstellen und reichhaltigere Merkmale.
Es ist zu beachten, dass die Funktion mySQL_field_type () in PHP 5.5.0 als veraltet markiert wurde und in PHP 7.0.0 vollständig entfernt wurde. Diese Funktion kann inkompatible Situationen verwendet werden, insbesondere bei Verwendung neuerer PHP -Versionen.
Es wird empfohlen, PDO oder MySQLI anstelle von MySQL -Erweiterung zu verwenden. PDO und MySQLI bieten flexiblere und sichere Datenbankbetriebsmethoden und unterstützen mehr Funktionen. Beispielsweise lautet die Methode zur Verwendung von MySQLI, um Feldtypen zu erhalten, wie folgt:
<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">// Druckfeldtyp</span></span><span>
}
</span></span>