繁体   English   中英

在两个具有相同名称列的表中检查重复项

[英]Checking for duplicates in two tables with same name columns

我是编程语言有限的业余爱好者,请帮助。 我有以下代码:

try
  {
     $stmt = $DB_con->prepare("SELECT user_email FROM m_users WHERE user_email=:umail");
     $stmt->execute(array(':umail'=>$umail));
     $row=$stmt->fetch(PDO::FETCH_ASSOC);

     if($row['user_email']==$umail) {
        $error[] = "Sorry but someone has already registered with this email address !";
     }
     else
     {
        if($user->register($umail,$ucountry,$uip)) 
        {
            $user->redirect('m_c.php');
        }
     }
 }
 catch(PDOException $e)
 {
    echo $e->getMessage();
 }

此代码按原样执行-仅在一个名为m_users表中查找重复的电子邮件,如果发现一个, m_users引发通知。

我想要的是它看起来并在名为f_users附加表中检查WELL,它具有完全相同的列结构。 我尝试了不同的技巧,无济于事。 提前谢谢了。

我的PHP非常生锈,但是您可以运行另一个查询并在有条件的情况下进行检查:

$stmt = $DB_con->prepare("SELECT user_email FROM m_users WHERE user_email=:umail");
$stmt->execute(array(':umail'=>$umail));
$row=$stmt->fetch(PDO::FETCH_ASSOC);

$stmt = $DB_con->prepare("SELECT user_email FROM f_users WHERE user_email=:umail");
$stmt->execute(array(':umail'=>$umail));
$row_2=$stmt->fetch(PDO::FETCH_ASSOC);

if($row['user_email']==$umail or $row_2['user_email']=$umail) {
   $error[] = "Sorry but someone has already registered with this email address !";
}

您是否可以更改SQL查询,以便在一个查询中在两个表中查找电子邮件地址?

SELECT user_email FROM m_users WHERE user_email=:umail 
UNION 
SELECT user_email FROM f_users WHERE user_email=:umail

就我所读的内容(我只是在猜测),您有一个供男性用户使用的表,另一个供女性用户使用的表,您可以通过将一个表转储到另一个表中并添加一列性别来合并两个表。 现在,有很多方法可以解决您的问题,但是我建议您这样做,它添加了另一个else语句并运行相同的查询,但是更改了表名。

<?php 
try{
    $stmt = $DB_con->prepare("SELECT user_email
        FROM m_users 
        WHERE user_email=:umail");
    $stmt->execute(array(':umail'=>$umail));
    $row=$stmt->fetch(PDO::FETCH_ASSOC);

    if($row['user_email']==$umail) {
        $error[] = "Sorry but someone has already registered with this  email address !";
    }else{
        $stmt = $DB_con->prepare("SELECT user_email
        FROM f_users 
        WHERE user_email=:umail");
        $stmt->execute(array(':umail'=>$umail));
        $row=$stmt->fetch(PDO::FETCH_ASSOC);
        if($row['user_email']==$umail) {
            $error[] = "Sorry but someone has already registered with this  email address !";
        }
    }else{
        if($user->register($umail,$ucountry,$uip)){
                $user->redirect('m_c.php');
        }
    }
 }catch(PDOException $e){
        echo $e->getMessage();
     }

?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM