MySQL输入另一个由PHP给定的值
最大的问题:mysql没有存储我通过PHP告诉他的信息 示例(此req是查询前的回显): 但在MySQL上,我有:MySQL输入另一个由PHP给定的值,mysql,debugging,Mysql,Debugging,最大的问题:mysql没有存储我通过PHP告诉他的信息 示例(此req是查询前的回显): 但在MySQL上,我有: 403 ckras 88.191.88.57 32767 100 Allemagne 20110519 1 2010-04-25 00:51:47 2 4 99 82.220.201.183 foo@foo.com 端口:37060(正确值)///32767(MySQL的药物?) 任何帮助都将不胜感激
403 ckras 88.191.88.57 32767 100 Allemagne 20110519 1 2010-04-25 00:51:47 2 4 99 82.220.201.183 foo@foo.com
端口:37060(正确值)///32767(MySQL的药物?)
任何帮助都将不胜感激,我比被困更糟糕,我已经离开了
PS:*据我所知,mysql上没有触发器/端口上没有控件,这意味着我无法修改“端口”值
这个脚本在80%的时间内都能正常工作(似乎只要用户输入一个端口>=30000,它就会导致这个bug),一个用户今天第一次向我报告了这个错误,脚本从3个月后就开始运行了*
谢谢您可能正在为
端口
属性使用smallint
数据类型。此数据类型的最大值为32767
事实上,我已经复制了您的问题:
CREATE TABLE a(a smallint);
Query OK, 0 rows affected (0.09 sec)
INSERT INTO a VALUES (37060);
Query OK, 1 row affected, 1 warning (0.02 sec)
SELECT * FROM a;
+-------+
| a |
+-------+
| 32767 |
+-------+
1 row in set (0.00 sec)
您只需使用更大的数据类型,例如mediumint
或int
进一步阅读:
- 不久前,我遇到了一个类似的问题,我不小心在一个接收到大值的字段中出现了tinyint,您应该检查您正在使用的字段的类型。我还建议,如果问题仍然存在,请尝试以字符串形式获取数据
还有其他一些方法可以尝试跟踪问题,尝试检查MySQL中的日志是否存在任何可能的错误,或者重写将数据插入MySQL的函数,有时候,最小的错误(通常很难发现)可能会毁掉一个原本非常棒的软件。尝试更改端口列的数据类型,比如。。你是对的:我使用smallint(5)。我以为加(5)可以处理0到99999之间的所有数字,谢谢!当然没问题,偶尔会发生在每个人身上:)
CREATE TABLE a(a smallint);
Query OK, 0 rows affected (0.09 sec)
INSERT INTO a VALUES (37060);
Query OK, 1 row affected, 1 warning (0.02 sec)
SELECT * FROM a;
+-------+
| a |
+-------+
| 32767 |
+-------+
1 row in set (0.00 sec)