插入MYSQL表的值与原始值不同

时间:2010-11-02 20:32:28

标签: php mysql wordpress

当我将它插入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'));

具有相同的结果。

有什么想法吗?

4 个答案:

答案 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。