MySQL输入另一个由PHP给定的值

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的药物?) 任何帮助都将不胜感激

最大的问题: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的药物?)

任何帮助都将不胜感激,我比被困更糟糕,我已经离开了

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)