首页 > 解决方案 > 使用 PHP 表单编辑数据库

问题描述

我有一个包含姓名、姓氏、电子邮件和总和的表格,请选择一个选项。电子邮件它是唯一的,您不能输入已被其他用户使用的电子邮件。当用户只更改名称而没有电子邮件时,问题就开始了

if (isset($_POST["submit"])) {

$db = new PDO('mysql:host=localhost;dbname=avihai_bid;charset=utf8', '****', '*******');
$sql = "SELECT * FROM users WHERE id = '$uid'";
$result = $db->prepare($sql);
$result->execute();
$user = $result->fetch(PDO::FETCH_ASSOC);

$nameError = '';

if (empty($_POST['name'])) {
    $nameError = 'שם הוא שדה חובה';

    $valid = false;

}

$lastnameError = '';

if (empty($_POST['lastname'])) {
    $lastnameError = 'שם משפחה הוא שדה חובה';

    $valid = false;

}

$emailError = '';

if (empty($_POST['email'])) {
    $emailError = 'אימייל הוא שדה חובה';

    $valid = false;

} elseif (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
    $emailError = 'אימיל לא תקין';

    $valid = false;

} elseif ($_POST['email']) {
    $query = $db->prepare("SELECT * FROM users WHERE email = :email");
    $query->bindParam(':email', $_POST['email']);
    $query->execute();
    if($POST['email'] === $user['email']){
        $valid = true;
    } elseif ($query->rowCount() == 1) {
        $emailError = 'אימייל זה קיים כבר אצלנו במערכת';
        $valid = false;
    }
}


if ($valid) {

    $sql = "UPDATE users SET name = :name, lastname = :lastname, email = :email, build_stage = :build_stage WHERE id = '$uid'";

    $insert = $db->prepare($sql);

    $insert->bindParam(':name', $_POST['name'], PDO::PARAM_STR);

    $insert->bindParam(':lastname', $_POST['lastname'], PDO::PARAM_STR);

    $insert->bindParam(':email', $_POST['email'], PDO::PARAM_STR);

    $insert->bindParam(':build_stage', $_POST['build_stage']);

    $insert->execute();

    if ($insert->rowCount() > 0) {
        $sql = "SELECT * FROM users WHERE id = '$uid'";
        $result = $db->prepare($sql);
        $result->execute();

        if ($result->rowCount() == 1) {
            $user = $result->fetch(PDO::FETCH_ASSOC);
            $_SESSION['user_id'] = $user['id'];
            $_SESSION['first_name'] = $user['name'];
            $_SESSION['last_name'] = $user['lastname'];
            $_SESSION['user_email'] = $user['email'];
            $_SESSION['build_stage']  = $user['build_stage'];

        }

    }
}

}

标签: phpforms

解决方案


//just REMOVE EMAIL in update
$sql = "UPDATE users SET name = :name, lastname = :lastname, 
build_stage = :build_stage WHERE id = '$uid'";

推荐阅读