2016-06-21 103 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