2014-02-18 96 views
0

我有一個問題,在我的數據庫中獲取最新的用戶名。我遇到的數據庫恰好有no auto_increment id字段。下面是我的代碼:CodeIgniter獲取最後一個用戶名沒有主ID

public function _username_check($user_name) 
{ 

    $this->db->select('user_name'); 
    $this->db->like('user_name', $user_name); 
    $this->db->order_by('user_date'); 
    $query = $this->db->get('users'); 


    if ($query->num_rows() > 0) 
    { 


     $row = $query->row(); 

     $db_username = $row->username; 

     echo $db_username; 
    } 

echo "did not get into the if function"; 
} 

我目前使用的社區驗證文件爲我的項目。它沒有任何自動增量ID字段,所以我使用user_date來檢查最後一個條目。

不知何故,它不進入if函數,我在這裏做錯了什麼?

如果用戶輸入用戶名,我需要能夠返回username2,如果用戶要輸入用戶,我需要能夠返回user3。

這是正確的做法嗎?

任何一種靈魂都可以幫助我嗎?先謝謝您的幫助。

+0

你可以發佈你的其他表結構,所以我們知道這樣做是安全的嗎?鑑於user_id不是主字段**(單獨)**將其設置爲自動遞增可能不是特別明智的,如果它由另一個使user_id爲外鍵的表填充。或者你可以很容易地添加一個新的列,比如'ts_registered'(DATETIME類型)來記錄用戶註冊的時間並通過它收集最後一個用戶。 – Prix

+0

如果用戶輸入用戶,你需要能夠返回user3',這是什麼意思? –

+0

嗨,大獎賽,我已經更新了我的問題,我已經把我的表格截圖,不知道是否足夠。 – Dr3am3rz

回答

1

我建議您在date time字段中添加一個additional column到用戶的表中。通過添加日期時間字段,您可以在不改變當前數據庫關係的情況下找到最新的用戶名。

$this->db->select('user_name'); 
$this->db->like('user_name', $user_name); 
$this->db->order_by('user_date','desc'); 
$this->db->limit(1); 
$query = $this->db->get('users'); 
+0

嗨,感謝您的幫助。它看起來像我在數據庫中的日期列。如果是這種情況,我該如何去使用它? – Dr3am3rz

+0

然後你可以按日期排列並獲得極限 –

+0

嗨,我已經嘗試使用你告訴我的方法,我已經更新了我的問題發佈。它似乎不會進入IF函數,我的代碼有什麼問題嗎? – Dr3am3rz