dedlfix: MySQL data type

Beitrag lesen

Tach!

Und Javascript gibt anscheinend gern NaN aus wenn man versucht mit Strings zu rechnen.

Ein weiterer Punkt ist auch noch, dass Javascript ja nicht direkt mit MySQL spricht, sondern da auch noch eine Übertragung von PHP zum Browser stattfindet. Auch da musst du berücksichtigen, wie die Daten formatiert sind. Wenn sie in JSON eingepackt sind, dann sollten sie bereits auf der Serverseite korrekt als Zahl und nicht als String eingepackt werden, damit sie korrekt als Number angelegt werden können, wenn das JSON geparst wird. Wenn es hingegen eine andere auf String basierende Übertragung ist, dann musst du selbst dafür sorgen, dass du das als Number geparst bekommst.

PHP hat keine solchen Probleme wie Javascript, weil es durch die unterschiedlichen Operatoren einen Rechenoperationswunsch von einem Stringverkettungswunsch unterscheiden kann. Javascript hat für beide Fälle ja nur das +. Abgesehen davon ist PHP generell toleranter und versucht mehr als Javascript zu erraten, was gemeint ist.

Daher die Frage: wie bekomme ich schon im MySQL Statement den Korrekten Daten Typ?

Das Statement ist noch nicht die richtige Stelle zum Ansetzen. Da gibt es nichts, um den gewünschten Datentyp anzugeben, wenn du nicht gerade was generelles umgestaltet haben möchtest, wie beispielsweise einen Date-Time-Wert in einen Unix-Timestamp. 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. Wenn es da nichts gibt, ein einfacher Typecast in PHP zu int oder float sollte genügen. Wenn nicht gerade NULL-Werte zurückkommen können, sorgt ja schon der Spaltentyp dafür, dass nur gültige Zahlenwerte gespeichert sein können, und somit auch nur solche in der Ergebnismenge landen (wenn sie ohne weitere Berechnungen abgefragt werden).

dedlfix.