3 回答

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊
用于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();
}
}
請(qǐng)注意,這不會(huì)告訴他們用戶名或電子郵件是否已被占用。如果您愿意,您應(yīng)該只執(zhí)行兩個(gè)單獨(dú)的查詢,一個(gè)查詢重復(fù)的用戶名,另一個(gè)查詢重復(fù)的電子郵件。
或者您可以將查詢更改為SELECT uid_users, email并獲取查詢結(jié)果。然后檢查獲取的用戶名或電子郵件是否與輸入匹配,并顯示相應(yīng)的錯(cuò)誤。

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊
為此,您可以使用 OR 運(yùn)算符:
SELECT uid_users
FROM users
WHERE uid_users=?
OR email=?";```

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果您想檢查數(shù)據(jù)庫(kù)中是否存在與用戶名和電子郵件匹配的記錄,那么您應(yīng)該使用WHERE uid_users=? AND email=?.
如果您想檢查數(shù)據(jù)庫(kù)中是否存在與用戶名或電子郵件匹配的記錄,請(qǐng)使用WHERE uid_users=? OR email=?。
小注意事項(xiàng),如果您只想檢查數(shù)據(jù)庫(kù)中記錄的存在性,則不需要獲取數(shù)據(jù)。只需讓 MySQL 告訴您匹配記錄的數(shù)量即可。用于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 關(guān)注
- 157 瀏覽
添加回答
舉報(bào)