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 關注
- 162 瀏覽
添加回答
舉報