10

私はいくつかのアイテムの価格をmysqlテーブルの中に入れなければなりません。私はDECIMAL(10,2)を使用してテーブルを作成しているので、コンマの後に2桁を超える必要はありません(たとえば、123,45は入力として受け入れられますが、123,456はPHPで123,45に丸められます)。mysqliの小数点を扱う

最初の質問:DECIMAL(10,2)を使用すると、コンマの前に保存できる数字の数はどのようにわかりますか?私はそれが10ではないことを知っています。10はMysqlがこれらの数値で数学を実行するときに使用する精度です。つまり、数値そのものの長さはどこで指定されていますか?

2番目の質問:私はデータ型に合わせてユーザー入力を丸めるためにPHPを使用しています(コンマの後に2つの数字で浮動小数点数)。これらのデータを挿入するには、どうすればmysqli->bind_paramを使用しますか? bind_paramが受け入れるこれらのデータ型(documentation)のどれを使用する必要がありますか(おそらくなぜですか?)

Character Description 
i corresponding variable has type integer 
d corresponding variable has type double 
s corresponding variable has type string 
b corresponding variable is a blob and will be sent in packets 

答えて

8

DECIMAL(10,2)10が使用される最大桁数であることを意味します。 2は、小数点の右側に2つがあることを指定しています。これは、左側に8数字が残っていることを意味します。 the manual

データ型は、doubleを10進数として使用する必要があります。

Integerには小数点の文字がありません。したがって、すべての数値になります。 Stringは、テキストであり数値ではありません。 Blobはバイナリラージオブジェクト、EG:画像

+0

ありがとう!それで10 - 2だと分かっています。 – Saturnix

+0

縮尺の正確な数値が必要な場合は、 'double'や' float'の使用をお勧めしません。 http://dev.mysql.com/doc/refman/5.6/en/problems-with-float.html –

+1

を参照してください。この質問と回答では、mysqlは 'decimal'を使います。これは、doubleに設定されているバインド・パラメータ・タイプのみです。そして、それは与えられたタイプからの唯一のオプションです。 –

関連する問題