3 回答
TA贡献1856条经验 获得超5个赞
用于OR检查另一列。
$sql = "SELECT uid_users FROM users WHERE uid_users=? OR email = ?";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
header("Location: ../register.php?error=sqlerror");
exit();
}
else {
mysqli_stmt_bind_param($stmt, "ss", $username, $email);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
$resultCheck = mysqli_stmt_num_rows($stmt);
if ($resultCheck > 0) {
header("Location: ../register.php?error=usertaken&mail=".$email);
exit();
}
}
请注意,这不会告诉他们用户名或电子邮件是否已被占用。如果您愿意,您应该只执行两个单独的查询,一个查询重复的用户名,另一个查询重复的电子邮件。
或者您可以将查询更改为SELECT uid_users, email并获取查询结果。然后检查获取的用户名或电子邮件是否与输入匹配,并显示相应的错误。
TA贡献1878条经验 获得超4个赞
为此,您可以使用 OR 运算符:
SELECT uid_users
FROM users
WHERE uid_users=?
OR email=?";```
TA贡献1906条经验 获得超3个赞
如果您想检查数据库中是否存在与用户名和电子邮件匹配的记录,那么您应该使用WHERE uid_users=? AND email=?.
如果您想检查数据库中是否存在与用户名或电子邮件匹配的记录,请使用WHERE uid_users=? OR email=?。
小注意事项,如果您只想检查数据库中记录的存在性,则不需要获取数据。只需让 MySQL 告诉您匹配记录的数量即可。用于COUNT()此目的。
$stmt = $conn->prepare("SELECT COUNT(1) FROM users WHERE uid_users=? OR email=?");
$stmt->bind_param('ss', $username, $email);
$stmt->execute();
// Fetch value of COUNT(1) from DB
$resultCheck = $stmt->get_result()->fetch_row()[0];
if ($resultCheck) {
header("Location: ../register.php?".http_build_query(['error' => 'usertaken', 'mail' => $email]));
exit();
}
- 3 回答
- 0 关注
- 121 浏览
添加回答
举报