php - 如何检查数据库中是否已存在电子邮件(PHP)
问题描述
我不知道如何检查数据库中是否已存在电子邮件。(MySQL)
我需要检查代码。(我输入这个是因为我的 stackoverflow 帖子需要更多字符)
如果你有帮助,我会很高兴。
是的,我必须输入更多字符。
PHP:
<?php
if(!empty($_POST["register-user"])) {
/* Form Required Field Validation */
foreach($_POST as $key=>$value) {
if(empty($_POST[$key])) {
$error_message = "Trebuie sa completezi tot.";
break;
}
}
/* Password Matching Validation */
if($_POST['password'] != $_POST['confirm_password']){
$error_message = 'Parolele trebuie sa fie la fel!<br>';
}
/* Email Validation */
if(!isset($error_message)) {
if (!filter_var($_POST["userEmail"], FILTER_VALIDATE_EMAIL)) {
$error_message = "Adresa invalida de email.";
}
}
/* Validation to check if gender is selected */
if(!isset($error_message)) {
if(!isset($_POST["gender"])) {
$error_message = "Toate campurile sunt obligatorii!";
}
}
/* Validation to check if Terms and Conditions are accepted */
if(!isset($error_message)) {
if(!isset($_POST["terms"])) {
$error_message = "Trebuie sa accepti termenii si conditiile!";
}
}
if(!isset($error_message)) {
require_once("dbcontroller.php");
$db_handle = new DBController();
$query = "INSERT INTO utilizatori (user_name, first_name, last_name, password, email, gender) VALUES
('" . $_POST["userName"] . "', '" . $_POST["firstName"] . "', '" . $_POST["lastName"] . "', '" . md5($_POST["password"]) . "', '" . $_POST["userEmail"] . "', '" . $_POST["gender"] . "')";
$result = $db_handle->insertQuery($query);
if(!empty($result)) {
$error_message = "";
$success_message = "Te-ai inregistrat cu succes!";
unset($_POST);
} else {
$error_message = "Problema cu inregistrarea,contacteaza administratorii!";
}
}
}
?>```
解决方案
您可以将您的INSERT INTO .. VALUES
声明转换为INSERT INTO SELECT ...
和email != '" . $_POST["userEmail"] . "'
INSERT INTO utilizatori (user_name, first_name, last_name, password, email, gender)
SELECT
'" . $_POST["userName"] . "', '" . $_POST["firstName"] . "', '" . $_POST["lastName"] . "',
'" . md5($_POST["password"]) . "', '" . $_POST["userEmail"] . "', '" . $_POST["gender"] . "'
FROM utilizatori
WHERE email != '" . $_POST["userEmail"] . "'
我不知道php中的注入预防措施,但至少在数据库中,我们将SQL语句保留在过程/函数中以防止注入。
推荐阅读
- node.js - 声明类型既不是“void”也不是“any”的函数必须返回一个值。ts Typescript
- c# - dml 命令可以在运行时在一个数据库上使用两次吗?
- python - 给定包含集合 S 中元素的元组集合 t,构建另一个成员不包含在 t 中的集合的最有效方法是什么?
- laravel - 如何将 Laravel Mix Build 通知窗口移动到页面底部
- ios - 在普通系统中以 react-native 为 ios 创建发布应用程序
- c - 为什么我的窗口只有在我使用 SDL_PollEvent() 后才会显示?
- java - IBM MobileFirst Adapter 接受 Multipart 请求
- icu - 为什么 ICU 对日期的“独立”值有区别?
- r - 如何(在R中)根据先前值除以当前值的计算来改变新列(这些值都在现有列中)
- javascript - 如何改进这个 js 功能,使其更快,更好的单元测试?