我试图和其他人一样在我之前检查我的网站上的帐户注册过程中是否存在电子邮件,使用PHP与MySQLi数据库进行交互。我尝试过使用尽可能多的指南,但是仍然没有运气。使用PHP检查MySQLi数据库中是否存在电子邮件
下面是我原来写在登记时插入用户的邮件到我的数据库代码:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$database = new mysqli("localhost", "user", "dbpw", "dbname");
if($database->connect_error){
die("Error connecting:" . $database->connect_error);
}
$email = $database->real_escape_string(htmlspecialchars($_POST["email"]));
$query = "SELECT email FROM Users WHERE email =$email";
$result = $database->query($query);
$numOfRows = $database->num_rows($result);
if($numOfRows > 0){
echo "Email already exists in our database.";
}else{
$query = "INSERT INTO Users (email) VALUES ('" . $email . "');
if(!$database->query($query)){echo("<p>Unable to add user for query: " . $query . " <br /> Error: " . $database->errno . " " . $database->error);}}
此前插入电子邮件检查(中频($ numOfRows)语句),我的数据库是正确更新。
但是,添加我尝试过的电子邮件检查后,页面完全崩溃。我的数据库不会使用唯一密码更新,并且如果电子邮件是重复的,它不会显示回显消息“电子邮件已存在于我们的数据库中”。该页面将加载,但只有基本的页眉,页脚和背景CSS我链接到每一页。
您在选择查询时出现错误:'$ query =“选择电子邮件来自用户WHERE电子邮件= $电子邮件”;'应该是'$查询=“选择电子邮件来自用户WHERE电子邮件='$ email'”;电子邮件的值应该用单引号括起来。它是一个字符串。您在插入 –
时以正确的方式执行此操作**警告:**您已开放* mysql注入*!使用'准备好的语句'来保护你自己。 – Nytrix
@Nytrix Roger,谢谢你的建议。将考虑更改此文件以使用准备好的语句,现在我已修复了我的主要问题。 – sono2