Я следую учебному пособию о том, как создать систему регистрации пользователей для веб-сайта. Я сделал это на шаг , но мне нужно проверить несколько значений в двух таблицах, чтобы увидеть, существуют ли они. Учебное пособие не делает этого.
Вот моя регистрационная форма:
<form action="/members/register/" name="registerForm">
<div>
<h2>Register</h2>
<h6>welcome</h6>
<div class="register">
<input type="text" name="firstname" placeholder="First Name" required>
<input type="text" name="lastname" placeholder="Last Name" required>
<input type="text" name="email" placeholder="Email" required>
<label for="dob">Date of Birth:
<input type="date" name="dob" id="dob" placeholder="Date of Birth" required>
</label>
<input type="text" name="username" placeholder="Username" required>
<input type="password" name="password" placeholder="Password" required>
<input type="password" name="passwordconfirm" placeholder="Confirm Password" required>
<p>By creating an account you agree to our <a href="/legal/terms-of-use/">Terms & Privacy</a>.</p>
<button type="submit" name="registerNow">Register</button>
</div>
</div>
</form>
Таблицы базы данных mySQL, с которыми мне нужно проверить:
users
-id
-username
-password
-userID (foreign key)
registered
-id
-nameFirst
-nameLast
-email
-dob
Iнеобходимо создать запрос, который проверяет, существует ли ЛЮБОЕ из следующего: 1) имя и фамилия вместе, 2) имя пользователя или 3) электронная почта.
Более того, как только я пойму, как выполнить запрос, подобный этомуЯ все еще немного озадачен тем, что означает ?
в запросе. Кроме того, этот пример кода только проверяет, существует ли имя пользователя, и выводит имя пользователя, которое уже существует. Пожалуйста, выберите другой. Мне нужно выводить разные вещи в зависимости от того, какие поля уже существуют в таблице (ах). Вот код из учебника:
if ($stmt = $con->prepare('SELECT id, password FROM accounts WHERE username = ?')) {
// Bind parameters (s = string, i = int, b = blob, etc), hash the password using the PHP password_hash function.
$stmt->bind_param('s', $_POST['username']);
$stmt->execute();
$stmt->store_result();
// Store the result so we can check if the account exists in the database.
if ($stmt->num_rows > 0) {
// Username already exists
echo 'Username already exists. Please choose another.';
} else {
// Insert new account
}
$stmt->close();
} else {
// Something is wrong with the sql statement, check to make sure accounts table exists with all 3 fields.
echo 'Could not prepare statement!';
}
$con->close();
Будет ли это так?
SELECT id, password
FROM users, registered
WHERE users.username = ? OR (registered.nameFirst = ? AND registered.nameLast = ?) OR registered.email = ?
И снова я учусь делать это с помощью учебника, поэтому я нехочу изменить что-либо в коде с точки зрения того, как он работает. Я понимаю, что есть гораздо лучшие способы сделать это. Я использую это как отправную точку, чтобы учиться и прогрессировать.