Ich habe 2 Datenbankfelder
`decval` decimal(5,2)
`intval` int(3)
Ich habe 2 PDO-Abfragen, die sie aktualisieren. Die, die das int aktualisiert, funktioniert in Ordnung
$update_intval->bindParam(':intval', $intval, PDO::PARAM_INT);
ich kann das Dezimalfeld jedoch nicht aktualisieren. Ich habe die 3 Möglichkeiten unten ausprobiert, aber nichts geht
$update_decval->bindParam(':decval', $decval, PDO::PARAM_STR);
$update_decval->bindParam(':decval', $decval, PDO::PARAM_INT);
$update_decval->bindParam(':decval', $decval);
Anscheinend liegt das Problem beim Datenbanktyp decimal
? Gibt es einen PDO::PARAM
für ein Feld vom Typ decimal
? Wenn nicht, was verwende ich als Problemumgehung?
Es gibt keinen PDO::PARAM
für Dezimale/Floats. Sie müssen PDO::PARAM_STR
verwenden.
UP muss PDO :: PARAM_STR gleich verwenden. Wenn die Spalte in der Datenbank vom Typ NUMERIC (M, D) oder dezimal (M, D) ist, sollte beachtet werden, dass M die Anzahl der Zeichen ist Gesamtzahl der Zeichen, die Sie eingeben können, und D die Anzahl der Dezimalstellen. Im Beispiel NUMERIC (10,2) haben wir 8 Genauigkeitsstellen und zwei Dezimalstellen. Wir haben also insgesamt 10 Zeichen, von denen 2 für Dezimalstellen reserviert sind.
Ich habe eine Lösung gefunden, sende den dezimalen Parameter wie PDO :: PARAM_STR, in der SQL Server Store-Prozedur empfange es wie dezimal (int, dec)
PHP
$stmt_e->bindParam(':valor_escala_desde', $valor_escala_desde, PDO::PARAM_STR);
SQL SERVER, SPEICHERPROZEDUR:
@valor_escala_desde decimal(18,2),
und ist fertig.