我正在尝试使用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
也在字段中,则不要插入。
答案 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进行比较,然后更新数据库。