使用PHP表单编辑数据库

时间:2018-11-25 10:31:26

标签: php forms

我有一个包含姓名,姓氏,电子邮件和总和的表格,请选择一个选项。通过电子邮件发送其唯一性,您无法输入其他用户已经在使用的电子邮件。当用户仅更改名称而没有电子邮件时,问题就开始了,因为当前用户正在使用该电子邮件,所以我收到一条错误消息,因为该电子邮件已被当前用户使用,因此我需要保留此电子邮件小技巧,以避免重复电子邮件并将其保留为一种形式/ p>

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'];

        }

    }
}

}

1 个答案:

答案 0 :(得分:0)

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