INSERT电子邮件地址,但忽略(如果存在||,如果后缀=现有后缀&& sender name = existingsender name)MYSQL

时间:2011-03-09 18:30:46

标签: php mysql email

我正在尝试使用php将查询插入mysql,但要有限制。

$sql_insert = "
INSERT IGNORE 
    into `email` 
        (`message`,`useremail`,`senderemail`) 
    VALUES 
        ('$emailmessage','$email_address','$fromaddress') 
WHERE
";

$ fromaddress是我想要制作约束的值。

这是一个例子

"Zazzle" <sender-1234@zazzle.com>

如果sender-1234@zazzle.com在senderemail字段中,请不要插入 如果"Zazzle"在字段中且@zazzle.com也在字段中,则不要插入。

1 个答案:

答案 0 :(得分:0)

您可以将电子邮件拆开,然后使用preg_match检查数据库以查看它是否存在于数据库中。如果使用示例:

--"Zazzle" <sender-1234@zazzle.com>

$atIndex = strrpos($fromaddress, "@");
$nameIndex = strrpos($fromaddress, "<");
$domain = substr($fromaddress, $atIndex+1); # returns zazzle.com
$local = substr($fromaddress, $nameIndex+1, $atIndex); # returns sender-123
$name = substring($fromaddress, 0, $nameIndex-1); # returns "Zazzle"

从那里你要做的就是做一个select / where查询,如果没有结果则插入。

$query = "SELECT * FROM email WHERE senderemail like '".$domain."'";
$result=mysql_query($query);
$num=mysql_num_rows($result);

或者

$query = "SELECT * FROM email";
$result=mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
     if(preg_match($domain, $row['senderemail'])) { $isPresent = true; }
} 

Preg match将查找单个返回值中的字符串,如果存在则将值设置为true。然后,您可以将该值与true / false进行比较,然后更新数据库。