2013-08-21 49 views
1

你好,我有下面的代碼,用於驗證一個表單中有數據,然後我想確保的姓名,電子郵件和地址在我的數據庫已經前的arent我插入它...PHP表單重複數據刪除插入

你能告訴我在哪裏搞亂與它下面是扔在已經存在的錯誤,即使它是唯一的數據

if($_POST['formSubmit'] == "Submit") 
{ 
    $errorMessage = ""; 

    if(empty($_POST['formName'])) 
    { 
     $errorMessage .= "<li>You forgot to enter a name!</li>"; 
    } 
    if(empty($_POST['formEmail'])) 
    { 
     $errorMessage .= "<li>You forgot to enter an email!</li>"; 
    } 
    if(empty($_POST['formAddress'])) 
    { 
     $errorMessage .= "<li>You forgot to enter your Address!</li>"; 
    } 
    if(empty($_POST['formCity'])) 
    { 
     $errorMessage .= "<li>You forgot to enter your City!</li>"; 
    } 
    if(empty($_POST['formState'])) 
    { 
     $errorMessage .= "<li>You forgot to enter your State!</li>"; 
    } 
    if(empty($_POST['formZip'])) 
    { 
     $errorMessage .= "<li>You forgot to enter your Zip!</li>"; 
    } 

    $varName = $_POST['formName']; 
    $varEmail = $_POST['formEmail']; 
    $varAddress = $_POST['formAddress']; 
    $varCity = $_POST['formCity']; 
    $varState = $_POST['formState']; 
    $varZip = $_POST['formZip']; 
    $varDate = $_POST['formDate']; 

    if(empty($errorMessage)) 
    { 
     $db = mysql_connect("localhost","root","PASSWORD"); 
     if(!$db) die("Error connecting to MySQL database."); 
     mysql_select_db("FormData" ,$db); 

     $dupesql = "SELECT * FROM formdata WHERE (name = '$varName' AND email = '$varEmail' AND address = '$varAddress')"; 

     $duperaw = mysql_query($dupesql); 

     if($duperaw > 0) { 
      echo ("$varName already exists in $varAddress \n"); 
     } 
     else { 
     $sql = "INSERT INTO formdata (name, email, address, city, state, zip, submitDate) VALUES (". 
         PrepSQL($varName) . ", " . 
         PrepSQL($varEmail) . ", " . 
         PrepSQL($varAddress) . ", " . 
         PrepSQL($varCity) . ", " . 
         PrepSQL($varState) . ", " . 
         PrepSQL($varZip) . ", " . 
         PrepSQL($varDate) . ")"; 
     mysql_query($sql); 

     header("location: index.php?success=1"); 
     exit(); 
     } 
    } 

} 
+3

[**在新的代碼,請不要使用'mysql_ *'功能**](http://bit.ly/phpmsql)。他們不再保留[並正式棄用(https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 –

+1

您正在檢查'$ duperaw'中的內容;但這是來自數據庫的記錄集,而不是查詢的實際結果。您需要使用mysql_num_rows來查看該記錄集中有多少行。 – andrewsi

回答

2

使用mysql_num_rows($duperaw) > 0,而不是僅僅$duperaw > 0檢查,如果您的查詢返回任何結果。

此外,避免使用mysql_*功能。他們不再維護,並且是deprecated as of PHP 5.5.0。有關更詳細的解釋,請閱讀this post。相反,使用PDOMySQLi,瞭解prepared statementsThis article可以幫助您決定使用哪個MySQL API。

+0

哇,所以我需要真正趕上我的PHP它已經很長一段時間,因爲我已經使用PHP。所以顯然你告訴我我們mysql_num_rows來解決我的問題(因爲它),但也告訴我重寫我的代碼使用PDO或MySQLi正確? – Travis

+0

確實。擁有最新的工具總是更好。 – PLPeeters

+0

是的,毫無疑問。我更喜歡在Java和.Net社區工作的前端人物,但對於一個簡單的項目,他們問我是否可以在PHP中完成並降低成本。這已過時多久了?但我想回頭我還沒有真正寫很多PHP在過去的2年,除了一些WordPress的東西 – Travis