2015-04-08 72 views
0

我想創建一個登錄函數,它允許我指定要從哪個表中選擇數據,以及我想要選擇的字段。 我已經設法將表值傳遞給函數,並從所需的表中選擇數據,但我的表具有不同的字段。如何在查詢中指定一個表select:user_id,user_first_name,user_password,或者如果它是其他表select select member_id,member_first_name,member_password。查詢:從特定表中選擇特定的字段

這是我迄今編碼:

public function logIn($id, $password, $table){ 
    $dataArray = array(); 
    $t = ($table === 'employers') ? 'employers' : 'members'); 
    $query = "SELECT user_id, user_first_name, user_password FROM $t"; 
    $stmt = $this->link->prepare($query); 

    if ($stmt->execute()) 
    { 
     $result = $stmt->get_result(); 
     while($row = $result->fetch_array(MYSQLI_ASSOC)) 
      { 
      $dbuser_id = $row['user_id']; 
      $dbpassword = $row['user_password']; 
      $dbuser_first_name = $row['user_first_name']; 
      } 
    //and so on... 

此外,一個快速的問題:這是一個不好的編程習慣,還是應該有2個登陸(會員和用戶)?

謝謝:)

+0

而不只是'如果($ stmt->的execute())'做'如果(! $ stmt-> execute()){trigger_error(「出現錯誤....」。$ this-> link-> error,E_USER_WARNING);}'並得到真正的錯誤,如果存在的話。 –

+0

@ Fred-ii-感謝您的提示,之後我即將進行錯誤檢查。 – Otonel

+0

您可以在'$ table'上使用'switch',然後將所需的表和列設置爲變量並將它們放入查詢中。 – chris85

回答

0

編程的單一職責原則是爲了防止這樣的事情的發生 - 我們的目標是爲一個類/函數有一個責任,而不是管理2(或潛在的更),因爲你在這裏。總之,這是一個糟糕的編程習慣,你應該有2個登錄功能,就像你說的。在完成2個不同的功能之後,switch語句可能有助於檢查登錄成員與用戶的情況。

注意:這也有例外。但是,就你而言,將兩者分開會更有意義。

這裏是一個鏈接來進一步解釋SRPSOLID設計原則:

Single Responsibility Principle on TutsPlus