Я установил поля базы данных «username» и «email» на unquie, при использовании кода ниже это работает только в том случае, если «имя пользователя» уже существует, а затем повторяет ошибку. Если они отправляются по электронной почте, пользователь получает ошибку дублирования mysql, когда должна отображаться та же ошибка, что и выше.
<?php require_once ( 'connection.php' ); $username=$_POST['username']; $password=md5($_POST['password']); $email=($_POST['email']); $ip=$_SERVER['REMOTE_ADDR']; session_start(); $query = "INSERT INTO users (username, password, email, rank, ip, active) VALUES ('$username','$password', '$email', '1', '$ip', '0')"; $sql = "SELECT username AND email FROM users WHERE username = '$username' AND email = '$email'" ; $result=mysql_query($sql); $count=mysql_num_rows($result); $row = mysql_fetch_array($result); if ( $count== 0 ) { if (!mysql_query($query)) { die('Error: ' . mysql_error()); } echo "You are signed up, please follow the link on your email to active your account."; } else { echo "Username or Email already exists"."<br><a href=\"sign_up.php\">Try Again</a></br>"; } ?
благодаря
Попробуйте переключиться
WHERE username = '$username' AND email = '$email'"
в
WHERE username = '$username' OR email = '$email'"
Edit : Я пытаюсь угадать, что вы пытаетесь сделать здесь. Из вашего описания кажется, что вы хотите, чтобы имя пользователя или письмо было уникальным, и у вас есть два отдельных уникальных индекса в этих столбцах. Ваш код проверяет уникальность комбинации имени пользователя и электронной почты.
Редактирование 2 : Кроме того, я думаю, вы, возможно, захотите изучить концепции SQL Injection и Concurrency .
Переключитесь на предложение OR в инструкции WHERE вместо AND.
Кроме того, НЕ используйте значения, указанные в $ _POST (или $ _GET и $ _REQUEST, если на то пошло), не убедившись, что они в безопасности. Что произойдет, если я отправил в него имя пользователя с SQL?
','','','','',''); DELETE FROM users;
Убедитесь, что вы используете add_slashes () или аналогичный процесс для очистки данных перед отправкой в базу данных.