【发布时间】:2019-01-21 07:19:36
【问题描述】:
我正在尝试对照我的数据库检查一封电子邮件,如果它不存在,请将其添加到数据库中。
$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,但这对我来说似乎很奇怪。像我在这里一样单独命名查询是一种好习惯吗?
如果还有什么需要补充的,请告诉我。
【问题讨论】:
-
您最好 1) 使用参数化查询 2) 在
select上使用where子句,这样您就不必遍历表中的每一行 3) 散列您的用户密码。目前,如果您的第一行与输入的电子邮件不匹配,则您正在输入新行。 -
如果用户 B 在用户 A 仍在检查时插入电子邮件怎么办?
标签: php mysql while-loop insert naming-conventions