2016-06-21 100 views
0

我是一个编程语言有限的业余爱好者,请帮助。 我有以下代码:检查两个同名列的表中的重复项目

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,如果找到一个抛出的通知。

我想要的是,它看起来并且在额外的f_users中检查ASWELL,它具有完全相同的列结构。 我尝试了不同的技巧无济于事。 非常感谢提前。

回答

0

对于我阅读,我只是猜测,你有男性用户使用一个表与另一个女性,你可以只通过一个倾倒到另一个和性别添加一列合并两个表。现在有很多方法可以解决您的问题,但是我建议这个方法,它会添加另一个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(); 
    } 

?> 
+0

嗨,谢谢你的回答。当数据库中有条目时,它会以某种方式工作,如果我选择了一个已经在数据库中的电子邮件,它会抛出通知。当数据库中没有条目并且必须创建一个条目时,出现此错误:“SQLSTATE [HY093]:无效的参数编号:绑定变量的数量与令牌数量不匹配”。你说得对,那些是男性和女性,我建立独立表格的原因是我想在不同的页面上区分它们。你的代码有一个额外的}地方,我正确地解决了它。谢谢 – Luc

+0

它实际上工作,对不起,我的脚本中有一个错误。非常感谢。 – Luc

+0

@Luc这个解决方案对你很有帮助。你能否赞成或接受答案,这将鼓励使用堆栈溢出系统,我必须承认,这鼓励了我。 祝您有美好的一天。 –

0

我的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 !"; 
} 
0

你可以改变SQL查询,以便它会查找电子邮件地址的两个表中的一个查询?

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