php - 插入数据库的数据,即使它已经存在
问题描述
我目前正在用 PHP 编写注册脚本,我的问题是数据仍然插入到数据库中,即使它已经存在。这可能是一些愚蠢的错误,或者我需要一些 else{} 声明,或者我真的不知道。问题是即使电子邮件已经存在于数据库中,它仍然会输入它。它确实显示错误就好了。
if(filter_var($email,FILTER_VALIDATE_EMAIL)){
$email = filter_var($email,FILTER_VALIDATE_EMAIL);
$email_check = mysqli_query($con, "SELECT email FROM database WHERE email='$email'");
$num_rows = mysqli_num_rows($email_check);
if($num_rows>0){
echo "The email is already in use.<br>";
}
$query = mysqli_query($con,"INSERT INTO database VALUES (NULL,'$username','$name','$email','$pwh','$date')");
}
?>
如果电子邮件已在使用中,则会显示回显“电子邮件已在使用中”。很好,但它仍然插入它。我错过了什么?我已经尝试过使用“其他”变量但没有任何帮助。
解决方案
你if
唯一的回应是什么,然后你无论如何都要去做INSERT
。一些解决方案:
if(filter_var($email,FILTER_VALIDATE_EMAIL)){
$email = filter_var($email,FILTER_VALIDATE_EMAIL);
$email_check = mysqli_query($con, "SELECT email FROM database WHERE email='$email'");
$num_rows = mysqli_num_rows($email_check);
if($num_rows>0){
echo "The email is already in use.<br>";
}
// ADD A ELSE SO YOU INSERT IF YOU HAVE NOTHING
else {
$query = mysqli_query($con,"INSERT INTO database VALUES (NULL,'$username','$name','$email','$pwh','$date')");
}
}
现在您也可以从您的数据库中阻止它:
- 在表格
UNIQUE INDEX
的列上添加一个email
database
- 立即使用
INSERT IGNORE
,因此如果未使用电子邮件,它将插入,如果已使用电子邮件,则忽略
最后,使用准备语句和绑定参数来避免 SQL 注入!
希望能帮助到你
推荐阅读
- java - 将 long time 转换为 Double
- python - 使用 ffmpeg 将 g729 立体声 WAV 音频文件解码为任何可播放格式
- python - Python比较两列
- mysql - ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册
- html - 如何设计一个像这个有角度的图像的html表格?
- statistics - 治疗变量的定义是什么?治疗变量和自变量之间的差异
- php - 如何从单词错误到第一个逗号','创建一个子字符串?
- docker - Docker 映像构建失败,出现错误“不允许操作”
- javascript - 仅检测 uBlock Origin 广告拦截器 (Vue)
- java - 定义抽象接口方法