wake-up-neo.com

PDO :: PARAM für den Typ dezimal?

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?

68
dmontain

Es gibt keinen PDO::PARAM für Dezimale/Floats. Sie müssen PDO::PARAM_STR verwenden.

74
Alix Axel

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.

0
Gil

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.

0
julio castillo