当我将它插入MYSQL表时,我遇到了一个更改值的奇怪问题。
这是一个Wordpress主题。
以下是代码的要点:
$user_id = $_COOKIE['user-id'];
$wpdb->insert($custom_table,array('user_id'=>$user_id));
$ custom_table的'user_id'字段的类型是int(15)。
我正在测试自己。存储在我的cookie中的用户ID是4022466561291.它以2147483647的形式存储在数据库中。
我也尝试过这种设置的各种组合:
$user_id = intval($_COOKIE['user-id']);
$wpdb->insert($custom_table,array('user_id'=>$user_id),array('%d'));
具有相同的结果。
有什么想法吗?
答案 0 :(得分:7)
这是因为签名的4字节INT
的2147483647 is the maximum value。
您需要使用8字节BIGINT
或 - 可能更合适 - VARCHAR
。
(15)
之后的INT
有点误导。它只是一个可选的显示长度限制。它不会更改数据类型的实际容量。
答案 1 :(得分:1)
int
不会保留那么大的值。您可以尝试bigint
。请参阅MySQL documentation
答案 2 :(得分:0)
请看这里:http://dev.mysql.com/doc/refman/5.1/en/numeric-types.html
int
的最大值为2147483647,请尝试使用bigint
。
答案 3 :(得分:0)
来自MySql Manual
INT [(M)] [UNSIGNED] [ZEROFILL]
正常大小的整数。签了 范围是-2147483648到2147483647。 无符号范围是0到4294967295。
INT上的(15)是建议的显示宽度,并且不会使INT保持更大的数字。你需要一个BIGINT。