MySQL输入的另一个值是PHP给出的值

时间:2010-04-24 23:12:02

标签: mysql debugging

最大的问题:mysql没有存储我通过PHP告诉他的信息

示例(此req是查询之前的回显):

INSERT INTO serveur (GSP_nom , IPserv, port, tickrate, membre, nomPays, finContrat, type, jeux, slot, ipClient, email) 
VALUES ( 'ckras', '88.191.88.57', '37060', '100' , '', 'Allemagne','20110519', '2', '4','99' ,'82.220.201.183','foo@foo.com');

但是在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就会导致该错误),用户今天首先向我报告此错误并且脚本自从运行以来3个月*

由于

2 个答案:

答案 0 :(得分:3)

您可能正在使用smallint属性的port数据类型。此数据类型的最大值为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)

您只需使用更大的数据类型,例如mediumintint

进一步阅读:

答案 1 :(得分:1)

不久前我遇到过类似的问题,我不小心在一个收到很大价值的字段中使用了tinyint,你应该检查你正在使用的字段类型。另外,我建议如果问题仍然存在,请尝试以字符串形式获取数据。

还有一些方法可以尝试跟踪问题,尝试检查MySQL中的日志是否存在任何可能的错误,或者重写将数据插入MySQL的函数,有时最小的错误(通常难以发现)可能会破坏否则很棒的软件。