php - 使用 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'];
}
}
}
}
解决方案
//just REMOVE EMAIL in update
$sql = "UPDATE users SET name = :name, lastname = :lastname,
build_stage = :build_stage WHERE id = '$uid'";
推荐阅读
- swift - 正则表达式不能快速工作
- php - PDO INSERT 语句静默失败
- java - 从 JAR 文件中加载 DLL
- javascript - 新的 React Context API 会触发重新渲染吗?
- php - 使用 Facebook 权限进行故障排除以上传视频
- css-selectors - CSS 选择器排除所有子项并选择父项中的其余部分
- python - OptionMenu __init__() 缺少 1 个必需的位置参数:“值”
- function - erlang 换个好玩的环境
- javascript - 将JS var写入html头脚本源码
- javascript - 使用javascript删除边缘浏览器中的缓存