dedlfix: MySQL data type

Beitrag lesen

Tach!

Erst das Lesen der Ergebnismenge ist der Punkt, an dem man anzusetzen versuchen kann. Ich würde dazu in die Dokumentation der verwendeten Fetch-Funktionen schauen, ob da was zum Datentyp geschrieben wird und/oder ob es andere Funktionen gibt, die das genauer zurückgeben.[...]

Kurzes nachschauen, ergab kein Erfolg zum Datentyp.

Nun, abgesehen davon, dass ich bei PHP nachgeschlagen hätte, aber die Seite bei MySQL sieht auf den ersten Blick inhaltlich gleich aus. Der entscheidende Punkt ist da die Aussage "Returns an associative array of strings ...". Damit dürfte schon recht viel gesagt sein, wenn da nicht noch was anderes steht, was nicht der Fall zu sein scheint.

Wenn es da nichts gibt, ein einfacher Typecast in PHP zu int oder float sollte genügen.

Also Ergebnissmenge in einer Schleife laufen lassen und jeden wirklichen Zahlenwert mit intval() und floatval() beackern?

Na, schauen wir mal beim Nachbarn rein. Es gibt da ja auch noch Prepared Statements und das Binding der Ergebnismengeninhalte an Variablen, sprich: mysqli_stmt::bind_result(). "Depending on column types bound variables can silently change to the corresponding PHP type." Das liest sich doch schon eher so, als ob das zielführend ist.

Nun wollte ich auch noch die Handbuchseite zu Prepared Statements verlinken, und was sehen meine altersschwachen Augen da in Example #5? "Native Datatypes" als Überschrift, Typangaben im Ergebnis und im Erläuterungstext "This behavior differs from non-prepared statements. By default, non-prepared statements return all results as strings." Mit anderen Worten, ein Result-Binding ist nicht notwendig, es muss nur das Statement als prepared abgeschickt werden und man kann dann recht herkömmlich fetchen und bekommt ordentliche Datentypen.

dedlfix.