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。
無論您發佈多少次副本,您都不會得到一個關於offtopic問題的答案。 –
這不是一個重複的問題,這是一個不同的問題。而你的主題是什麼意思?我想我找出了我的第一個問題。我認爲這是由於使用用戶名來獲得id,這意味着更改用戶名意味着沒有id可以被檢索。所以我改變了我的代碼,並在我的表單中爲id添加了一個隱藏字段。但我不能確定這是否解決了第一個問題,因爲它導致了第二個問題。 – P22