2つのデータベースフィールドがあります
`decval` decimal(5,2)
`intval` int(3)
それらを更新する2つのpdoクエリがあります。 intを更新するものは正常に動作します
$update_intval->bindParam(':intval', $intval, PDO::PARAM_INT);
しかし、小数フィールドを更新することはできません。私は以下の3つの方法を試しましたが、何も動作しません
$update_decval->bindParam(':decval', $decval, PDO::PARAM_STR);
$update_decval->bindParam(':decval', $decval, PDO::PARAM_INT);
$update_decval->bindParam(':decval', $decval);
問題はデータベースタイプdecimal
にあるようです。ありますか PDO::PARAM
タイプdecimal
のフィールドの場合そうでない場合、回避策として何を使用しますか?
小数/浮動小数点用のPDO::PARAM
はありません。PDO::PARAM_STR
を使用する必要があります。
UPはPDO :: PARAM_STRと同じものを使用する必要があり、データベース内の列がNUMERIC(M、D)または10進数(M、D)のタイプである場合、Mは文字数の精度であることに注意してください入力できる文字の合計、D小数点以下の桁数。 NUMERIC(10,2)の例では、正確な場所と小数点以下2桁までの8つの家があります。したがって、合計10文字で、小数点以下に2文字が予約されています。
私は解決策を見つけました、PDO :: PARAM_STRのようなdecimalパラメータを送信し、sqlサーバーストアプロシージャでdecimal(int、dec)のようにそれを受け取ります
PHP
$stmt_e->bindParam(':valor_escala_desde', $valor_escala_desde, PDO::PARAM_STR);
SQLサーバー、ストアプロシージャ:
@valor_escala_desde decimal(18,2),
完了です。