php - INSERT 除非存在于其他表中

标签 php mysql

我的网站上有 users 表,我想编写一个函数,将 email 列插入到不同的表 mailing_list,但前提是电子邮件不存在。

对于这个问题,您可以假设每个表都有这些列:IDusernameemail

这是我当前的代码:

$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/

相关文章:

php - 在 Yii 中使用 CD 命令时,如何将两列连接为一列,并且它们之间有一个空格?

php - 我试图将其重写为 mysqli_query 但我不断收到错误

php - Drupal:未登录时不显示任何内容

php - 完成我的 php 电子邮件表单后,页脚甚至没有出现在检查元素上

php - 使用ajax和php更新mysql(使用jquery)

php - CakePHP updateAll() 不工作

php - 检查数据库中的现有条目或重新创建表?

mysql - MySQL 触发器可以模拟 CHECK 约束吗?

php - 如何在 PHP 中正确处理小数?

php - WordPress 中的 Memcached 请求循环或缓存踩踏