Bei Verwendung der MySQLI -Erweiterung für Datenbankoperationen in PHP wird häufig die Methode MySQLI_Result :: Fetch_column aufgetreten. Diese Methode kann ein einzelnes Datenelement der angegebenen Spalte aus dem Abfrageergebnis extrahieren. Viele Entwickler stoßen jedoch häufig Probleme mit Rückgabetypen, wenn sie die Methode Fetch_column verwenden. Welchen Typ kehrt Fetch_Column zurück? Wie kann es in der tatsächlichen Entwicklung korrekt konvertiert werden, um Typ -Conversion -Fehler zu vermeiden?
Fetch_Column ist eine Methode in der Klasse MySQLI_Result , die Daten aus einer bestimmten Spalte aus einer Zeile im Ergebnissatz extrahiert. Die grundlegende Nutzung ist 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">"user"</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 id, name FROM users"</span></span><span>);
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch_column</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$row</span></span><span>;
}
</span></span>In diesem Beispiel bedeutet Fetch_Column (0) das Extrahieren des Werts der ersten Spalte (dh der ID -Spalte) aus jeder Zeile des Abfrageergebnisses. Der Rückgabewert ist der Inhalt der angegebenen Spalte. Wenn mehrere Spalten in einer Zeile der Abfrage vorhanden sind, gibt Fetch_Column nur die Daten der angegebenen Spalte zurück.
Der Rückgabewert von Fetch_Column ist kein fester Typ. Es gibt verschiedene Werte zurück, basierend auf dem Typ der entsprechenden Spalten in der Datenbanktabelle und wie PHP mit der Datenbank interagiert. Gemeinsame Rückgabetypen umfassen:
Zeichenfolge : Für Spalten vom Typ Text, varchar , Zeichen, geben Sie eine Zeichenfolge zurück.
INT : Für Ganzzahlspalten wie int, bigint usw. wird eine Ganzzahl zurückgegeben.
Float : Für schwimmende Dezimalarten wie Dezimal, Float, Double usw. wird ein schwimmendes Dezimaler zurückgegeben.
NULL : Wenn die Abfragespalte einen Nullwert enthält, ist der Rückgabewert Null .
Es ist zu beachten, dass Fetch_Column diese Rückgabewerte nicht wirft, sondern die Abfrageergebnisse basierend auf dem Datentyp in der Datenbanktabelle direkt zurückgibt. Daher können die zurückgegebenen Datentypen in verschiedenen Fällen variieren.
Da der von Fetch_Column zurückgegebene Werttyp nicht festgelegt ist, können Entwickler bei der Verarbeitung der Rückgabewerte auf Nichtübereinstimmung des Typs stoßen. Der Versuch, eine Zeichenfolge mit einer Ganzzahl zu betreiben oder einen Nullwert an eine Funktion zu übergeben, die einen Nicht-Null-Wert erfordert, führt zu einem Laufzeitfehler oder einem logischen Fehler.
Vergleich von Zeichenfolgen und Zahlen : Wenn Fetch_Column eine Zeichenfolgennummer zurückgibt und Sie sie mit einer echten Ganzzahl vergleichen, können Sie auf ungenaue Situationen stoßen.
Null -Wert -Verarbeitung : Wenn der Rückgabewert null ist und Sie nicht die richtige Überprüfung durchführen, wird bei nachfolgenden Operationen ein Fehler aufgenommen, z .
Typ Cast : Manchmal müssen wir den Rückgabewert explizit in einen bestimmten Datentyp konvertieren, andernfalls wirkt sich dies auf die Logik des Programms aus. Wenn Sie beispielsweise die Nummer einer Zeichenfolge in eine Ganzzahl konvertieren oder eine schwebende Dezimalzahl in eine Ganzzahl umwandeln, kann die Präzision verloren gehen.
Um den oben genannten Typ -Konvertierungsfehler zu vermeiden, können wir die folgenden Methoden mitnehmen, um den Rückgabewert zu verarbeiten, um die Robustheit des Codes zu gewährleisten.
Wenn Sie Fetch_column zur Rückgabe des Werts verwenden, können Sie ihn direkt auf den Typ der Spalte kennen. Zum Beispiel:
<span><span><span class="hljs-variable">$columnValue</span></span><span> = (</span><span><span class="hljs-keyword">int</span></span><span>) </span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch_column</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>); </span><span><span class="hljs-comment">// Ganzzahl gegossen</span></span><span>
</span></span>Diese Methode stellt sicher, dass wir den richtigen Typ entsprechend unseren Anforderungen erhalten und Fehler vermeiden, die durch andere Typen verursacht werden.
Um Nullwerte zu vermeiden, müssen Nullwertprüfungen durchgeführt werden, bevor der Rückgabewert verwendet wird. Zum Beispiel:
<span><span><span class="hljs-variable">$columnValue</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch_column</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$columnValue</span></span><span> !== </span><span><span class="hljs-literal">NULL</span></span><span>) {
</span><span><span class="hljs-comment">// Behandeln Sie Nicht-Null-Werte</span></span><span>
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-comment">// bewältigen NULL Wert</span></span><span>
}
</span></span>Für Felder, die numerische Werte erfordern, können Sie bei der zurückgegebenen Anzahl von String -Typen die IS_Numererische Funktion verwenden, um die Konvertierung zu überprüfen und dann eingeben:
<span><span><span class="hljs-variable">$columnValue</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch_column</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_numeric</span></span><span>(</span><span><span class="hljs-variable">$columnValue</span></span><span>)) {
</span><span><span class="hljs-variable">$columnValue</span></span><span> = (</span><span><span class="hljs-keyword">float</span></span><span>) </span><span><span class="hljs-variable">$columnValue</span></span><span>; </span><span><span class="hljs-comment">// In schwimmende Dezimalheit konvertieren</span></span><span>
}
</span></span>Bei der Abfrage können SQL -Funktionen wie Cast oder Konvertierung verwendet werden, um sicherzustellen, dass die aus der Datenbank erhaltenen Daten in den gewünschten Typ konvertiert wurden. Zum Beispiel:
<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 CAST(price AS DECIMAL(10, 2)) FROM products"</span></span><span>);
</span></span>Auf diese Weise kann der zurückgegebene Datentyp auf Datenbankebene gesteuert werden, wodurch die Konvertierungsarbeiten auf PHP -Ebene reduziert werden.
Der von MySQLI_Result :: Fetch_column zurückgegebene Datentyp ist nicht behoben und wird normalerweise basierend auf dem Datentyp der Spalten in der Datenbanktabelle ermittelt. Um bei der Verwendung von Typ -Konvertierungsfehlern zu vermeiden, müssen Entwickler entsprechende Typprüfungen und -konvertierungen für den Rückgabewert durchführen. Durch die rationale Verwendung von Gusstypkonvertierung, Null -Check, IS_Numeric -Funktion und andere Methoden können Typfehler effektiv vermieden werden und die Stabilität und Korrektheit des Programms sichergestellt werden.
Verwandte Tags:
mysqli_result