Ankündigung

Einklappen
Keine Ankündigung bisher.

Seit PHP 7.2 werden Zahlen nicht mehr als float in DB eingetragen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Seit PHP 7.2 werden Zahlen nicht mehr als float in DB eingetragen

    Guten Tag,

    ich habe ein Tool zur Einnahmen-/Ausgabenerfassung programmiert, dass ich seit 1,5 J. problemlos nutze. Seit der Umstellung von PHP 7 auf PHP 7.2 kann ich nun aber meine Beträge als Float nicht mehr in die Datenbank schreiben.
    Ich gebe die Werte immer mit Punkt ein (34.99) was bisher auch als Float in der DB eingetragen wurde. Nun werden sie als normale Int-Werte eingetragen (34).

    Übermittlung der Eingabe:
    PHP-Code:
    if(isset($_POST['save'])){    
    $date date("Y-m-d"strtotime($_POST['date']));    
    $expenses $_POST['expenses'];    
    $id $accounting->saveNewAccounting($date$expenses); } 
    Input-Field für die Eingabe:
    PHP-Code:
     <div>    
    <div>        
    <div>            
    <label>Ausgaben</label>            
    <input type="text" value="<?php echo isset($expenses) ? $expenses '' ?>"
    name="expenses"
    id="expenses" >
    </div>
    </div>
    </div>

    Hiermit wird die Eingabe in die DB geschrieben:
    PHP-Code:
    public function saveNewAccounting($date$expenses){    
    $sth $this->database->getDbh()->prepare('
    INSERT INTO accounting (date, expenses)
    VALUES (:date, :expenses)'
    );    
    $sth->bindParam(':date'$datePDO::PARAM_STR);    
    $sth->bindParam(':expenses'$expensesPDO::PARAM_INT);    
    $result $sth->execute();    
    if(
    $result){        
    $id $this->database->getDbh()->lastInsertId();        
    return 
    $id;} } 
    Und in der DB wird ein Eingabe (expenses) mit dem Typ double abgelegt.

    Kann es sein, dass unter PHP 7.2 das PDO mit PDO::PARAM_INT nicht mehr funktioniert?

    Hat jemand sonst eine Lösung oder Idee was ich für PHP 7.2 jetzt anpassen muss?

    Vielen Dank für jeden Hinweis,
    schönen Gruß Jonnhy

  • #2
    Unter welcher PHP Version soll das mit PDO::PARAM_INT für Float/Decimal denn mal funktioniert haben?
    Da es für Float/Decimal nichts spezielles gibt must du wohl PDO::PARAM_STR nehmen.

    Kommentar


    • #3
      Zitat von jspit Beitrag anzeigen
      Unter welcher PHP Version soll das mit PDO::PARAM_INT für Float/Decimal denn mal funktioniert haben?
      Vielleicht im emulierten Modus.

      Kommentar


      • #4
        Ja stimmt, das war´s auch!

        Versteh zwar noch nicht warum PARAM_INT nicht mehr möglich ist, ich glaube die letzte Monate war es immer PHP 7.0, mit der es problemlos lief

        Danke für die schnelle Hilfe und Gruß

        Kommentar


        • #5
          Float ist eben kein Integer. Was gibts daran nicht zu verstehen?

          Kommentar


          • #6
            Zitat von Jonnhy Beitrag anzeigen
            Versteh zwar noch nicht warum PARAM_INT nicht mehr möglich ist
            Weil das escaping nach dem Integer Modus auch für floats funktioniert, jedoch ein echtes (nicht emuliertes) Prepared Statement kein escaping machen braucht.

            Kommentar

            Lädt...
            X