2014-02-22 44 views
0

我想糾正一個腳本來更新在這裏我的數據庫的用戶是我的代碼:mysqli的更新不工作,不返回任何錯誤

我從形式獲取用戶數據:

$user = new User(); 

if (isset($_POST['submit'])) { 
    // Process the form 

    // validations 
    // $required_fields = array("username", "password"); 
    // validate_presences($required_fields); 

    // $fields_with_max_lengths = array("username" => 30); 
    // validate_max_lengths($fields_with_max_lengths); 

    $errors = ""; //temp 

    if (empty($errors)) { 

    $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"]); 

    print_r($user); 

    $user_by_id = $user->find_user_by_id($user->id); 

    print_r($user_by_id); 

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

    //->id,$user->username,$user->hashed_password,$user->firstname,$user->lastname 

    unset($user); 
} 

這裏是我的find_user_by_id方法:

public static function find_user_by_id($id=0){ 

global $db; 

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

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

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

最後我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->first_name}', "; 
    $query .= "last_name = '{$user->last_name}' "; 
    $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."); 
     redirect_to("change.php?id={$user->id}"); 

    } 
} 

當我嘗試更新用戶時,我被重定向到change.php,錯誤消息用戶更新失敗。我一直在努力通過邏輯,我似乎無法找到我出錯的地方。 print_r稍後添加以查看對象是否具有適當的值,並且它們確實如此。

編輯1:

我改變了一些代碼,看看有什麼mysqli_affected_rows回報,則返回0。

+0

無論您發佈多少次副本,您都不會得到一個關於offtopic問題的答案。 –

+0

這不是一個重複的問題,這是一個不同的問題。而你的主題是什麼意思?我想我找出了我的第一個問題。我認爲這是由於使用用戶名來獲得id,這意味着更改用戶名意味着沒有id可以被檢索。所以我改變了我的代碼,並在我的表單中爲id添加了一個隱藏字段。但我不能確定這是否解決了第一個問題,因爲它導致了第二個問題。 – P22

回答

0

多小時後,我終於想通了,我只是不得不採取了線:

$user_by_id = $user->find_user_by_id($user->id); 

和更改行:

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

到:

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

此行是the way I was doing it before的剩餘部分,它導致我將原始數據而不是新數據發送到更改方法。