0

値「-1」をデータベースに挿入できません。フィールドが設定されたテーブルですint(10)。何が問題なのかわからない。私たちを手伝ってくれますか。ありがとうございました。

$sql2="INSERT INTO attendance_count(username,date,count_time,appendix)VALUES('$applicant','$date1','-1','$altext')";
mysql_query($sql2);
4

4 に答える 4

1

intなので、一重引用符を付けないでください。

于 2013-01-23T08:42:14.860 に答える
1

列がないことを確認してくださいUNSIGNED

于 2013-01-23T08:42:41.593 に答える
1

ドキュメントには、リテラルの「-」文字は格納されないと記載されています。つまり、他の符号付きINTEGERフィールドが常に実行していたことを実行し、代わりに負の数を示す符号ビットを格納していることを意味します。

数値の前にマイナス記号が表示されているのは、その符号ビットの結果としてMySQLによって生成されているためです。

符号ビットがわからない場合は、符号付きバイトが-128〜127の数値を格納し、符号なしバイトが0〜255の数値を格納する方法を検討できます。これは、符号付き数値の8ビットの1つが+/-(1は負、0は正)を格納するために使用され、残りのビットは最大2 ^ 7(-128または127)の数値を提供します。

したがって、たとえば、ビット1111に符号ビットがある場合は-7(負の+ 4 + 2 + 1)になりますが、符号なしの場合は15(8 + 4 + 2 + 1)になります。それでも同じ量のビットが格納されています。

符号付き数値の負の境界が8番目のビットを使用できるのに、正の境界は7ビットの合計(8番目のビットより1少ない)に制限されているのはなぜか疑問に思われるかもしれません。これは、10000000が負と8番目のビットの両方であると見なされるためです。これは、-0の表現が0を表す00000000と重複しているためです。負のゼロと正のゼロの区別がないため、負の最上位ビットは常に値です。そのビット自体の(しかし負の)。

于 2013-01-23T08:43:17.320 に答える
-1

値 -1 を入力する列SIGNED

INT(SIGNED) values can be a minimum of-2147483648 to a maximum of 2147483647 INT(UNSIGNED) values can be a minimum of 0 to a maximum of 4294967295

于 2013-01-23T08:45:53.757 に答える