2014-02-22 36 views
-1

我在數據庫中有一些用戶,我可以編輯他們的名稱和密碼,但是當我嘗試編輯用戶名時,查詢失敗。試圖更改用戶名時MySQL查詢失敗

這裏是我的代碼

$user->username = $db->mysql_prep($_POST["username"]); 
    $user->hashed_password = ($_POST["password"]); 
    $user->firstname = $db->mysql_prep($_POST["firstname"]); 
    $user->lastname = $db->mysql_prep($_POST["lastname"]); 

    $user_query = $user->find_user_by_username($user->username); 
    $user->id = $user_query["id"]; 

    $result = $user->change_user_by_id($user); 
    //->id,$user->username,$user->hashed_password,$user->firstname,$user->lastname 

    unset($user); 

我change_user_by_id方法:

public function change_user_by_id($user){ 
     global $db; 
     global $session; 

     $query = "UPDATE users SET "; 
     $query .= "username = '{$user->username}', "; 
     $query .= "first_name = '{$user->firstname}', "; 
     $query .= "last_name = '{$user->lastname}' "; 
     $query .= "WHERE id = {$user->id} "; 
     $query .= "LIMIT 1"; 

     $result = mysqli_query($db->connection, $query); 

     $db->confirm_query($result); 

     if ($result && mysqli_affected_rows($db->connection) == 1) { 
       // Success 
      $session->message("User updated."); 
      redirect_to("list.php"); 
     } else { 
       // Failure 
      $session->message("User update failed."); 
     } 
    } 

而且我find_user_by_username方法:

public static function find_user_by_username($username="default"){ 
     global $db; 

     $query = "SELECT * "; 
     $query .= "FROM users "; 
     $query .= "WHERE username = '{$username}' "; 
     $query .= "LIMIT 1"; 

     $user_set = mysqli_query($db->connection, $query); 
     $db->confirm_query($user_set); 

     if($user = mysqli_fetch_assoc($user_set)) { 
      return $user; 
     } else { 
      return null; 
     } 
    } 

編輯:

唯一犯錯或者我得到的是從confirm_query功能我得到的消息「數據庫查詢失敗」下面是函數:

public function confirm_query($result_set) { 

    if (!$result_set) { 
     die("Database query failed."); 
    } 

} 

編輯2:

新增的錯誤信息,這就是我得到:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 1' at line 1

+3

你得到一個MySQL錯誤?這將有助於解決問題。 – Bram

+0

我得到的唯一錯誤來自confirm_query功能我得到的消息 「數據庫查詢失敗」 下面是函數: \t公共職能confirm_query($ result_set){ \t \t如果($ result_set!){ \t \t \t die(「數據庫查詢失敗。」); \t \t} \t} – P22

+0

試試這個:'公共職能confirm_query($ result_set){如果(!$ result_set){模具(mysql_error()); }}' – Bram

回答

0

我想通過使用用戶名來獲得id,這意味着更改用戶名意味着沒有id可以被檢索。所以我改變了我的代碼,並在我的表單中爲id添加了一個隱藏字段。

舊代碼:

$user->username = $db->mysql_prep($_POST["username"]); 
$user->hashed_password = ($_POST["password"]); 
$user->firstname = $db->mysql_prep($_POST["firstname"]); 
$user->lastname = $db->mysql_prep($_POST["lastname"]); 

$user_query = $user->find_user_by_username($user->username); 
$user->id = $user_query["id"]; 

$result = $user->change_user_by_id($user); 

unset($user); 

換成新代碼:

$user->username = $db->mysql_prep($_POST["username"]); 
$user->hashed_password = ($_POST["password"]); 
$user->first_name = $db->mysql_prep($_POST["first_name"]); 
$user->last_name = $db->mysql_prep($_POST["last_name"]); 
$user->id = $db->mysql_prep($_POST["id"]); 

$result = $user->change_user_by_id($user); 

unset($user);