2013-01-23 63 views
0

我無法將值「-1」插入到數據庫中,表中設置的字段爲int(10)。 我不知道問題是什麼。你可以幫幫我嗎。謝謝。無法將值'-1'插入到數據庫中

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

其數據類型是* * count_time? – World

+0

數據類型是int(10)。 – user1902899

+2

那麼你不應該把-1放在引號內。 – World

回答

1

不要把單引號,因爲它是一個整數。

+0

沒關係。無論如何,MySQL必須解析它,因爲SQL字符串是STRING。引號不會改變MySQL中的任何內容。 – Sven

+0

我嘗試刪除單引號,然後運行代碼。它不能將數據插入到數據庫中。數據庫中沒有任何數據。 – user1902899

+0

int應該是'SIGNED'。 Mysql聲明所有整數類型都可以有一個可選的(非標準)屬性UNSIGNED。無符號類型可用於只允許列中的非負數,或者當您需要列的較大數值範圍時。例如,如果INT列是UNSIGNED,則列的範圍大小相同,但其端點從-2147483648和2147483647轉變爲0和4294967295. –

1

確保列不是UNSIGNED

+0

是的。只是整數,而不是無符號整數。 – user1902899

+1

-1閱讀原始問題,聲明字段類型爲'int(10)' – Veger

1

該文檔稱它不會儲存文字「 - 」字符, 這意味着它可能是現在在做什麼其他簽署INTEGER 領域始終完成,它存儲一個符號位來代表負數 數字。

您仍然在數字之前看到一個減號,因爲它是由MySQL根據該符號位生成的 。

如果你不明白的符號位,可以考慮如何簽署 字節可以從-128存儲號碼127,而一個無符號字節可以從0 店數爲255。這是一個8,因爲 有符號數中的位用於存儲+/-(1爲負數,0爲 爲正),而其餘位提供最大爲2^7(-128或 127)的數字。因此,例如,如果位1111具有符號位,它們將等於-7 (負+4 + 2 + 1),但是如果它們是無符號的,它們將等於15(8 + 4 + 2 + 1) 1)。 它仍然保存着相同數量的位。

您可能想知道爲什麼有符號數中的負界限可以使用第8位的 ,而正界限制爲7位 (小於第8位1)的總和。這是因爲10000000被認爲是 同時爲負數和第8位,因爲它的 表示-0反過來與00000000是多餘的,其中 表示0。負數和負數之間沒有區別,所以負數最高有效位總是那個位本身的值(但是是負值)。

+0

這裏是原始[post](http://stackoverflow.com/questions/3760822/storing-negative-number-in- mysql-table-version-5-0-3) –

+1

是的,我在這裏提取它,因爲它是相同的問題。我猜這沒什麼錯,因爲這是被接受的答案。 – Techie

-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

+0

-1閱讀原始問題,它聲明的字段類型是'int(10)' – Veger

+0

使用phpmyadmin,我可以將該值更改爲「-1」。 – user1902899

相關問題