我有两个mysql表格,我想在它们两个中都插入一个电子邮件。
我需要将电子邮件拆分为名称
和域名
,并将它们的每个部分插入到一个表中。
我的域名
表格是这样的:
+----+--------+
| id | domain | primary(id)
+----+--------+
我的email
表格如下:
+-------+----------+
| eMail | domainId | primary key(eMail, domainId)
+-------+----------+
即:info@example.com >
example.com
必须插入到 domain
表中,并且必须将 info
添加到带有 domainId 的 email
表中。域名必须是唯一的。
foreach($emails as $email)
{
list($account,$hostname) = explode('@',$email,2);
$query = $dbh->prepare("SELECT id FROM domain WHERE domain LIKE :domain LIMIT 0,1");
$query->execute(array(':domain'=>trim($hostname)));
if($query->rowCount())
{
$id = $query->fetch();
$id = $id['id'];
}else{
$insert = $dbh->prepare("INSERT INTO domain (domain) VALUES (:domain)");
$insert->execute(array(':domain'=>trim($hostname)));
$id = $dbh->lastInsertId();
}
$name = $dbh->prepare("INSERT INTO email (eMail, domainId) VALUES (:eMail, :domainId)");
$name->execute(array(':eMail'=>trim($account),':domainId'=>$id));
}
但是当我想添加大量电子邮件时,这种方式非常慢:
有没有更快的方法或者我可以用单个查询来完成这个任务..?