我正试图对照我的数据库检查一封电子邮件,如果它还不存在,请将它添加到数据库中。
$query = "SELECT * FROM users";
$inputQuery = "INSERT INTO users (`email`,
`password`) VALUES ('$emailInput',
'$passInput')";
$emailInput = ($_POST['email']);
$passInput = ($_POST['password']);
if ($result = mysqli_query($link, $query)) {
while ($row = mysqli_fetch_array($result)) {
if ($row['email'] == $emailInput) {
echo "We already have that email!";
} else {
mysqli_query($link, $inputQuery);
echo "Hopefully that's been added to the database!";
}
}
};
它可以检测到现有的电子邮件,它只是增加位。。。
目前,这似乎为每个现有行添加了一个新的空行(大小增加了一倍)。我试图理解它为什么不添加信息,以及如何以某种方式逃离循环。
同样值得注意的是,每个人似乎都重用$query,但这对我来说似乎很奇怪。像这里一样单独命名查询是一种好的做法吗?
如果还有什么需要补充的,请告诉我。
3条答案
按热度按时间v8wbuo2f1#
试试这个:
nom7f22z2#
您的代码似乎有点设计过度,因为为什么不传递给您$\u post['email']以选择查询where子句“select*from users where email=$emailinput”,然后检查它是否已经存在。另外,请记住,这只是一个示例,您应该始终检查和清理用户输入。从另一方面来说,你可以用mysql只使用插入。。。重复密钥更新语法。https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html 这需要为电子邮件列添加唯一键。
70gysomp3#
我不打算谈论标准,而是直接、简单地回答你的问题。
方法-1:
方法-2:-在
email
列-使用插入忽略选项。用户3783243的评论值得注意