2016-06-21 13 views
0

私はプログラミング言語が限られている素人です。 は、私は次のコードを持っている:同じ名前の列を持つ2つのテーブルの重複をチェックする

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と呼ばれるひとつのテーブルに重複した電子メールを検索し、それが1を見つけた場合は、通知がスローされます。

私が望むのは、全く同じ列構造を持つf_usersという表追加のという表でよく見えることです。 私は役に立たない別のトリックを試みた。 事前に感謝します。

答えて

0

、と私は推測しています、あなたは男性ユーザーと女性のための別のためのテーブルを持って、あなただけの他に1をダンプし、性別の列を追加することによって、両方のテーブルをマージすることができます。今、あなたの問題にアプローチする方法がたくさんありますが、私はこれを提案します。これは、別の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

こんにちは、ありがとうございました。データベースにエントリがあるときに何とか動作し、すでにDBに入っている電子メールを選択すると、通知がスローされます。 DBにエントリがなく、SQLを作成する必要がある場合、このエラーが発生します。「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 
関連する問題