2012-12-22 46 views
-2

我正在爲課堂構建一個簡單的登錄/註冊網站。 (即沒有md5,sha等)其中一個參數是不允許新註冊的密碼在註冊時等於前3個。如果是這樣的話,我要編寫一個返回true的函數。我無法弄清楚如何做到這一點。我數據庫上的主鍵是user_id(自動遞增)。這裏,如果用戶名已經存在,則返回true函數:如何查詢mysql中的前3條記錄?

function user_exists ($username) { 
    return (mysql_result(mysql_query("SELECT COUNT(`user_id`) 
    FROM `users` WHERE `username` = '$username'"), 0) == 1) ? true : false;} 

我以爲我會與此啓動,並添加一些代碼,只在前面三個用戶名回頭

function returns true if password exists database 
function password_exists ($password) { 
$password = sanitize($password); 
return (mysql_result(mysql_query("SELECT COUNT(`user_id`) `FROM `users` 
WHERE `password` = '$password' AND `user_id <'$user_id' ORDER BY user_id DESC, LIMIT 3"), 0) == 1) ? true : false ; 

我是否想要用一個函數做太多?即我是否需要先將最後3條記錄隔離在一個函數中,然後搜索那個集合?我應該添加一個按順序編號輸入的列嗎?即如果有5條記錄1,2,3,4,5和'2'被刪除,那麼該列將讀取1,2,3,4。在我看來,這樣搜索會更容易。任何幫助非常感謝!感謝

} 

回答

0

你可以通過做這個嵌套查詢的格式爲:

SELECT x FROM (SELECT ...) as y; 

你內心的選擇(SELECT ...)將返回的記錄,按日期排序(最近的第一)並且限制爲3.

您的外部選擇將從內部選擇中選擇用戶名。

如果返回> 0條記錄,則知道用戶名不好。

0

這樣做沒有意義。
檢查整個數據庫或根本不檢查。

此外,這樣的功能將對安全產生巨大的影響,意味着這樣的錯誤可能暗示某人的其他密碼。

(如果是功課需要的話,難怪爲什麼大家都討厭PHP,即使在課上他們教你編寫可怕的代碼)