Frage

Ich habe Abrufen MySQL Query-Ergebnisse versucht, mit mysql_fetch_row() und mysql_result() und numerische Werte werden als Strings zurück.

Gibt es eine Möglichkeit, die Daten zu holen als Datentyp in der Tabelle gespeichert ist?

Die Anwendung wird die Abfrage viele verschiedene Abfragen sein, damit ich nicht in der Lage sein werde, die Werte wie der beabsichtigten Datentyp auf einer 1 um 1 Basis zu werfen.

War es hilfreich?

Lösung

Ich glaube nicht, Daten in ihrem nativen Datentyp immer (d. Irgendetwas anderes, dass Strings) in PHP 5.2 ...

erfolgen

In PHP 5.3 wird es möglich, wenn ich mich richtig erinnere, wenn Sie den neuen verwenden (neu, wie in PHP> = 5.3) mysqlnd (MySQL-Native-Treiber) Treiber.

Nach mehr Graben durch meine Lesezeichen ich diesen Artikel über mysqlnd gefunden: PDO_MYSQLND: The new features of PDO_MYSQL in PHP 5.3

Er sagt, dieses (Zitat):

  

Die Vorteile der Verwendung mysqlnd für PDO

     

mysqlnd kehrt nativen Datentypen, wenn   mit Server-Seite Prepared Statements,   zum Beispiel ist eine INT Kolonne zurück   als eine ganzzahlige Variable nicht als   String. Das bedeutet weniger Daten   Conversions intern.

Aber das ist PHP 5.3 nur (vorausgesetzt, Ihre Version von PHP 5.3 mit mysqlnd kompiliert wird ( und nicht die alte libmysql) ), und scheint nur der Fall zu sein für Prepared Statements: - (

Was nicht ganz Hilfe tut, in Ihrer Situation, denke ich ...


Und hier ist ein anderer, noch über die neuen Funktionen von mysqlnd, die Gespräche über diese nicht nur für Prepared Statements: PHP:. Neuer Netzwerkverkehr, CPU- und Speichereinsparungen mit mysqlnd

Nicht sicher, dies wurde in die offiziellen mysqlnd Fahrer verschmolzen, obwohl - bester Weg, um zu versuchen, wäre; aber es wird immer noch sein PHP> = 5,3 nur, sowieso ...


Eine andere Lösung wäre, zu haben, auf der PHP-Seite, eine Art von Mapping-System (wie ein ORM) zu den Ergebnissen konvertieren von der DB zu PHP kommenden Datentypen ...

Und ja, das ist schlecht, wenn Sie den Einsatz Operatoren wie === und !== wollen, welche Art empfindliche ...

Andere Tipps

versuchen Sie dies, wenn Mysqli anstelle von PDO mit

$mysqli->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top