Sendgrid表示Categories是String数据类型的形式,如下:
[
{
"email": "john.doe@sendgrid.com",
"timestamp": 1337966815,
"category": [
"newuser",
"transactional"
],
"event": "open"
},
{
"email": "jane.doe@sendgrid.com",
"timestamp": 1337966815,
"category": "olduser"
"event": "open"
}
]
因此,如果有人发送一个数字,例如类别的 11111
,sendgrid 会将其视为字符串并将其发回。
我总是使用数值来发送,当我返回相同的值时,我将其存储在数据库中的整数列中。例如我将存储
我的列 category_int
中的 11111
值,其数据类型为 int(11)
。
因为,我总是将其存储在整数列中,所以每当有人以实际字符串的形式发送类别时,就像上面的 olduser
一样,我就会收到错误。
我的问题:
我是否看到错误,因为我的 category_int
列旨在接收整数值而不是字符串值?但如果这是真的,那么 sendgrid 发送的值不是,在数字的情况下(在我的例子中是 11111)
被视为字符串,也许在这种情况下我也应该得到错误。仅当我以一些描述性词语(如 olduser
等)的形式发送类别时,才会出现错误。
请指教。
最佳答案
问题是 int(11)
列不能包含字符串。 MySQL 能够理解“11111”作为字符串可以更改为 int 11111
并知道如何转换它。但它不知道如何将 olduser
转换为 int,因此会抛出错误。
您可以将数据类型更改为 varchar
,然后该列就能够处理 11111
和 olduser
。
您还可以在将代码中的值传递到数据库之前检查它,并丢弃无法转换为整数的值。
关于mysql - 接收字符串文字并将其存储在数据库的整数列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23434591/