Float Werte kommen gerundet in der MySQL Datenbank an

Hallo, ich habe Xamp installiert und mein altes Script wieder aktiviert, um die Daten von meiner Wetterstation in der Datenbank zu speichern. Ich musste etwas abändern weil jetzt mysqli statt mysql in PHP verwendet wird. Leider kommen jetzt keine Nachkommastellen in meiner Datenbank an. Es ist alles gerundet. In der Datenbank ist unverändert alles auf Float eingestellt. Was mache ich falsch ?

<?


 $mysqli = new mysqli("localhost", "root", "", "wetterdaten");
if ($mysqli->connect_errno) {
    die("Verbindung fehlgeschlagen: " . $mysqli->connect_error);
}

 
$Datum=date("y.m.d");
$Zeit=date("H:i");
$Temperatur=GetValueFloat(50715 /*[KS300 Wetterstation\Temperatur]*/);
echo $Temperatur;
$Luftfeuchtigkeit=GetValueInteger(32051 /*[KS300 Wetterstation\Luftfeuchtigkeit]*/);
$Regenmenge=GetValueInteger(48616 /*[KS300 Wetterstation\Regenmenge]*/);
$Tagesregenmenge=GetValueFloat(53960 /*[KS300 Wetterstation\Liter heute]*/);
$Wind=GetValueFloat(25046 /*[KS300 Wetterstation\Wind Geschwindigkeit]*/);

$eintrag = "INSERT INTO werte (Datum, Zeit, Temperatur,
  Luftfeuchtigkeit, Regenmenge, Tagesregenmenge, Wind) VALUES ('$Datum', '$Zeit', '$Temperatur(2,1)',
  '$Luftfeuchtigkeit', '$Regenmenge', '$Tagesregenmenge', '$Wind')";

$mysqli->query($eintrag);

?>

Das liegt daran das PHP hier eine automatische Float zu String Konvertierung vornimmt.
Diese wird der local (de) entsprechend mit Komma durchgeführt.
Du brauchst aber einen Punkt für den SQL Query.
Das Float zu String Thema gab es hier schon häufiger.
Hier gibt habe ich eine passende Lösung für dich:
IPSMySQLArchiv/module.php at fde006a1118a8056ecd6a1687773c6c5c8877dc8 · Nall-chan/IPSMySQLArchiv · GitHub
Oder gleich das Modul nutzen :wink:
Michael

Vielen Dank für den Tip.

Es funktioniert wieder alles so wie ich es wollte.




// Datenbankverbindung aufbauen
 $mysqli = new mysqli("localhost", "root", "", "wetterdaten");
 if ($mysqli->connect_errno) {
 die("Verbindung fehlgeschlagen: " . $mysqli->connect_error);
}

// Datum und Uhrzeit erzeugen 
$Datum=date("y.m.d");
$Zeit=date("H:i");

// Werte einlesen
$Temperatur=GetValueFloat(50715 /*[KS300 Wetterstation\Temperatur]*/);
$Wind=GetValueFloat(25046 /*[KS300 Wetterstation\Wind Geschwindigkeit]*/);
$Luftfeuchtigkeit=GetValueInteger(32051 /*[KS300 Wetterstation\Luftfeuchtigkeit]*/);
$Regenmenge=GetValueInteger(48616 /*[KS300 Wetterstation\Regenmenge]*/);
$Tagesregenmenge=GetValueFloat(53960 /*[KS300 Wetterstation\Liter heute]*/);


// Vor dem Schreiben in die Datenbank Komma in Temperatur und Wind durch Punkt ersetzen
$FormatedTemperatur = sprintf('%F', $Temperatur);
$FormatedWind = sprintf('%F', $Wind);


// Werte in Datenbank schreiben
$eintrag = "INSERT INTO werte (Datum, Zeit, Temperatur, Luftfeuchtigkeit, Regenmenge, Tagesregenmenge, Wind) VALUES ('$Datum', '$Zeit', '$FormatedTemperatur',
 '$Luftfeuchtigkeit', '$Regenmenge', '$Tagesregenmenge', '$FormatedWind')";
$mysqli->query($eintrag);