在mysql中验证电子邮件地址我已经通过有效的电子邮件地址,在MySQL存储过程中没有得到一个问题,这里就是想发生:在存储过程
DELIMITER go
Create procedure AddMessages(
Out MessageID tinyint(11),
IN iFirstName varchar(30),
IN iLastName varchar(30),
IN iTextBox varchar(400),
IN iEmailAddress varchar(30))
BEGIN
/*declaring local variable*/
If(iFirstName='') then
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Fill out the First Name';
Elseif(iLastName='') then
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Fill out the Last Name';
Elseif(iTextBox='') then
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Fill out the Message Box';
Elseif(iEmailAddress='') then
SIGNAL SQLSTATE '45000'
/* Checking if email address is not valid*/
SET MESSAGE_TEXT = 'Fill out the Email Address';
Elseif(iEmailaddress!='^[a-zA-Z0-9][a-zA-Z0-9._-]*@[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,4}$') then
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Please enter the correct email address'
;
Else
/* insert the messages*/
insert into Messages(
FirstName,
LastName,
Messagetextbox,
EmailAddress
)
Values
(
iFirstName,
iLastName ,
iTextBox ,
iEmailAddress
);
set MessageID = last_insert_id();
end if;
End
当我用
测试它set @new_id = null;
call AddMessages(@new_id,'Jamie','Jones','Hello','[email protected]');
select @new_id;
我是,我一直得到消息,说请 输入正确的邮箱地址,我已经测试了不使用 @
和它的作品,但由于某种原因,验证电子邮件苏结果ppose不通过 显示相同的消息。
您不能使用'!='进行正则表达式匹配。使用'IF iEmailaddress NOT RLIKE'...'' – Barmar
'='和'!='做精确的字符串匹配,而不是正则表达式。 – Barmar
请加**,请**允许超过30个字符的电子邮件地址。由于“david.jones @ corporationlatetotheparty.com”不是一个不寻常的地址,你会看到很多人碰到这个限制。使用'VARCHAR(255)'作为任何通用文本字段,除非你有一个非常有说服力的理由来改变默认值。 – tadman