2013-01-23 28 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