在MySQL数据库中存储电子邮件应该使用哪种数据类型?

10
我有一个小网站,想把我的联系人的电子邮件存储在MySQL数据库中。我正在使用PHP和MySQL。每次尝试时,会出现以下错误。但是如果我删除 @ 和 .(点),它就可以正常工作。我真的需要帮助,请告诉我我犯了什么错误,并且如果提供代码将非常有帮助。
我已经只使用 VARCHAR 。它一直显示以下错误:
  

您的SQL语法有误;与您的MySQL服务器版本相对应的手册   在“@ gmail.com(id INT NOT NULL AUTO_INCREMENT,PRIMARY KEY(id),name VARCHAR(3”附近使用正确的语法


你能复制你正尝试执行的SQL查询吗? - Mihai Iorga
1
对于大多数情况,使用VARCHAR(50)(适用于MySQL)来存储电子邮件是可以的。 - Arvind
请将字段类型设置为VARCHAR,这对我来说总是有效的。也许您没有将字段设置得足够大?我通常至少使用50个字符。 - MS-DDOS
请使用varchar(50)数据类型。但我认为您的查询存在错误,请发布查询语句。 - Code Lღver
3
由于该错误代码看起来像是CREATE TABLE语句的一部分,您应该发布它,因为您的语法不正确,而不是字段类型。 - Jared Farrish
显示剩余2条评论
4个回答

7

您可以使用长度为 1-255vachar 数据类型。

如果您的值的长度超过 255,请使用 text 数据类型获取更多信息。


5
使用varchar,将电子邮件地址用引号括起来,这样它就可以像字符串一样处理:

'Email@gmail.com'

就是这样,伙计。


1
除了@符号的错误外,您仍然有一个查询无法工作: gmail.com( id INT.... 难道不应该是 gmail.com',( id INT....?
您的数据库无法处理@的事实可能是由于数据库的字符集引起的。它是UTF-8 Unicode(utf8)吗? 您想要存储邮件的记录类型是什么?

当“@”和“.”被移除时,问题不会发生,因此这不是varchar(50)的问题。 - Yolknet

1

一个 varchar(50) 足以存储电子邮件地址。

然后在您的查询中,所有要插入的值都必须用 ''"" 包装。

e.g

$sql='INSERT INTO TABLE1 VALUES("Value1","EMAIL@GMAIL.com","VALUES3")'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接