簡體   English   中英

"嘗試在 PHP PDO 中創建更新配置文件頁面"

[英]Trying to create update profile page in PHP PDO

我正在嘗試在 PHP 中創建更新配置文件頁面。 但是,我一直遇到錯誤。 當我提交表單以更新個人資料時,有四個字段。 用戶名、電子郵件、名字和姓氏。 假設我只想更改用戶的名字,當我提交表單時,它給我一個錯誤,告訴我用戶名\/電子郵件\/姓氏已被使用,因為它已經自動填寫。

這是我的更新個人資料表單,字段包含從數據庫中提取的用戶信息<\/a>

這是我的更新配置文件代碼,與表單一起使用

    // Queries
if (isset($_POST['userprofileupdate'])) {
    $firstname = mysqli_real_escape_string($conn, $_POST['name_1']);
    $lastname = mysqli_real_escape_string($conn, $_POST['name_2']);
    $email = mysqli_real_escape_string($conn, $_POST['email_1']);
    $username = mysqli_real_escape_string($conn, $_POST['username']);

    // Check if Email exists
    $stmt = $pdo->prepare('SELECT * FROM `users` WHERE `email` = :email ');
    $stmt->bindParam(":email", $email, PDO::PARAM_STR);
    $stmt->execute();

    $Count = $stmt->rowCount();

    // Check if username exists
    $stmt = $pdo->prepare('SELECT * FROM `users` WHERE `username` = :username ');
    $stmt->bindParam(":username", $username, PDO::PARAM_STR);
    $stmt->execute();

    $Count1 = $stmt->rowCount();

    if ($Count < 1) {
        if ($Count1 < 1) {
            $query = "UPDATE users SET username=?, firstname=?, lastname=?, email=? WHERE id=?";
            $stmt = $pdo->prepare($query);
            $stmt->bindParam('ssssi', $username, $firstname, $lastname, $email, $id);
            $stmt->execute();

            unset($_SESSION['username']);
            unset($_SESSION['firstname']);
            unset($_SESSION['lastname']);
            unset($_SESSION['role']);
            unset($_SESSION['email']);
            unset($_SESSION['password']);
            session_destroy();

            header('Location: /panel/login?profile_changed');
        } else {
            header('Location: /panel/profile?username_taken');
        }
    } else {
        header('Location: /panel/profile?email_taken');
    }
}
$stmt = $pdo->prepare("SELECT * FROM users WHERE `email`=':email'");
$stmt->execute(['email' => $email]); 
$user = $stmt->fetch();

/// 更新

   $sql = "UPDATE users SET username=?, firstname=?, lastname=?, email=? 
    WHERE id=?";
   $stmt= $pdo->prepare($sql);
   $stmt->execute([$firstname, $lastname, $email, $id]);

或者請完整閱讀這篇文章以完全理解https://phpdelusions.net/pdo_examples/select

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM