2016-04-13 13 views
0

我正在修改另一名開發人員在PHP中構建的Web應用程序。目前,如果用戶填寫表單並輸入已被使用的用戶名,它將在新頁面上顯示MySQL錯誤Duplicate entry 'fred' for key 'username'。我想這樣做是爲了在同一頁面上顯示一條錯誤消息,所以我試圖檢查輸入的用戶名是否與表中的另一個用戶名匹配,但我無法使其正常工作。有什麼想法嗎?檢查MySQL的重複條目

$username_entry = ($_POST['username']); 
$username_match = mysql_query("SELECT * FROM business WHERE username='$username_entry'"); 

if (($_POST['username']) == $username_match) { 
    // do something 
} 
+0

哪部分不工作? –

+0

最好的解決方案是已經實施的解決方案。如果您在輸入結果上獲得重複鍵,則可以顯示相應的錯誤消息。這可以確保您只有一次往返數據庫。如果您在插入之前檢查用戶是否存在,將導致2次往返成本更高。 我看到您的問題的最佳解決方案是: 1.將錯誤消息頁面重定向回調用頁面並顯示相應的錯誤。 2.使用ajax完成請求,並在調用表單上顯示錯誤。 – Chris

+0

@ Chris-MayhemSoftware我是一個PHP noob,所以我不確定如何以這種方式顯示錯誤消息。你能詳細說明一下嗎? –

回答

0

首先,您沒有從查詢中返回任何東西來檢查。我查詢數據庫以查看是否有任何行返回該用戶名。 $ cnt是行數,所以如果大於零,你有一個重複。

$username_entry = ($_POST['username']); 
    $username_match = mysql_query("SELECT count(*) FROM business WHERE username='$username_entry'"); 
    $cnt = mysql_num_rows($username_match); 

    if (($cnt > 0) { 
     // do something 
    } 
+0

感謝您的回覆。我在使用代碼時遇到以下錯誤: –

+0

Warning:mysql_fetch_array()期望參數1是/ Applications/XAMPP/xamppfiles/htdocs/shop-local-weekly-root/arizona/anytown/_actions/addbssn.php on line 45 警告:mysql_num_rows()期望參數1是/ Applications/XAMPP/xamppfiles/htdocs/shop-local-weekly-root/arizona/anytown/_actions/addbssn中給出的資源,null。 php 46行 –

+0

如果你想這樣做最好只使用count(*),所以你只能得到1行。 – Chris