我的网站上有 users
表,我想编写一个函数,将 email
列插入到不同的表 mailing_list
,但前提是电子邮件不存在。
对于这个问题,您可以假设每个表都有这些列:ID
、username
、email
。
这是我当前的代码:
$get_mails = $db->query("SELECT `username`,`email`,`email_approved`,`ver` FROM `users` WHERE ver='yes' && email_approved='1'");
while ($mails = $get_mails->fetch_assoc()) {
if ($db->query("SELECT `email` FROM `mailing_list` WHERE email='".$mails['email']."'")->num_rows == 0) {
$db->query("INSERT INTO `mailing_list` VALUES('','".$mails['email']."','".$mails['username']."')");
}
}
如您所见,它的效率不是很高。有一种方法可以在 INSERT
查询本身中完成吗?
谢谢。
最佳答案
一个(有点肮脏的)解决方案是在 mailing list
中的 email
字段上放置一个唯一索引,这将防止重复条目,因此您不必这样做首先是一个选择查询。
编辑,例子:
$db->query
(
"INSERT IGNORE INTO `mailing_list`
SELECT '',email,username FROM `users`
WHERE ver = 'yes' AND email_approved = '1'"
);
关于php - INSERT 除非存在于其他表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31565848/