php
  • mysql
  • 2012-01-13 46 views 0 likes 
    0

    我正在嘗試編寫具有以下字段的註冊表單的代碼。姓名,電子郵件地址,出生日期,地址等。如果新進入者的姓名和電子郵件地址與
    現有的姓名和電子郵件地址匹配,則應該要求另外的姓名和電子郵件地址。檢查mysql中表單值的重複操作

    我用下面的代碼。

    <?php 
    $sel = "SELECT `varEmail`, `intStudentId` FROM `tbl_registration` WHERE `varEmail` = '".$emailaddress."' AND `intStudentId` <> '".$Id."' "; 
    $res = mysql_query($sel); 
    if(mysql_num_rows($res) >0) 
    { ?> 
    <h3 style="color:#FF0000; text-align:center;">The Email Address and name already exists. Please mention different one.</h3> 
    <?php 
    } 
    
    else 
        { 
    
    $insertstudent="INSERT INTO `tbl_registration` (
    `varFname` , 
    `varLname` , 
    `varAddress` , 
    `varGender` , 
    `intDOB` , 
    `varEmail` 
    ) 
    VALUES (
    '".$fname."', '".$lname."', '".$address."', '".$gender."', '".$DOB."', '".$emailaddress."' 
    );"; 
    $insert_res = mysql_query($insertstudent); 
        } 
    
    ?> 
    

    但它只檢查電子郵件的重複。我如何修改我的代碼以檢查名稱和電子郵件重複?

    +0

    雙崗:http://stackoverflow.com/questions/8849224/checking-field-in-my-sql – mustafa 2012-01-13 11:41:51

    回答

    1

    應該檢查哪個名稱域? fname,lname還是兩者?

    爲姓:

    $sel = "SELECT `varEmail`, `intStudentId` FROM `tbl_registration` WHERE (`varEmail` = '".$emailaddress."' OR `varFname` = '".$fname."') AND `intStudentId` <> '".$Id."' "; 
    

    爲名字:

    $sel = "SELECT `varEmail`, `intStudentId` FROM `tbl_registration` WHERE (`varEmail` = '".$emailaddress."' OR `varLname` = '".$lname."') AND `intStudentId` <> '".$Id."' "; 
    

    兩種:

    $sel = "SELECT `varEmail`, `intStudentId` FROM `tbl_registration` WHERE (`varEmail` = '".$emailaddress."' OR (`varLname` = '".$lname."' AND `varFname` = '".$fname."')) AND `intStudentId` <> '".$Id."' "; 
    
    +0

    我認爲這是一個評論,不是答案;) – 2012-01-13 11:37:23

    +0

    已編輯;) – Abadon 2012-01-13 11:44:58

    +0

    謝謝。現在它工作正常。再次感謝您的詳細解答。 – designersvsoft 2012-01-13 11:56:25

    1

    第一行:

    $sel = "SELECT `varEmail`, `varLname`, `intStudentId` 
         FROM `tbl_registration` 
         WHERE `varEmail` = '".$emailaddress."' 
          AND `varLname` = '".$name."' 
          AND `intStudentId` <> '".$Id."' "; 
    

    其中varLname是你的db字段名稱和$ name是你從窗體中取的值。

    +0

    這將只適用於電子郵件和名稱相同,我認爲它應該檢查電子郵件或名稱 – Abadon 2012-01-13 12:00:54

    +0

    從第一篇文章:「如果新進入者名稱**和**電子郵件地址與現有的匹配,它應該要求另一個姓名和電子郵件。「 :-) – 2012-01-13 13:49:59

    0

    通過你選擇的長相我可以看到你檢查的電子郵件,但沒有名字,你需要的是添加到您查詢......

    0

    嘗試做沒有額外 SELECT查詢。

    這些字段可以是唯一的;只需添加複雜的唯一密鑰(名稱,電子郵件)。

    現在,我們有兩個變種:

    1. 使用INSERT語句添加新的記錄,你會得到重複的錯誤,抓住這個錯誤,並詢問用戶的另一個名字和電子郵件。

    2. 使用帶有IGNORE選項的INSERT語句,它將幫助您避免錯誤,然後調用mysql_affected_rows()函數以查明有多少行受到影響;如果爲0,則請求用戶輸入其他姓名和電子郵件。

    相關問題