2013-07-01 2 views
-1

Итак, у меня есть инструкция if в PHP, чтобы проверить, используется ли имя пользователя/письмо в таблице SQL, но когда я его тестирую, он продолжает говорить, что имя пользователя/адрес электронной почты уже используется, даже если его , Поэтому я предполагаю, что я сделал оператор if или извлечение данных неправильно, но я не могу узнать, что я сделал неправильно. Кроме того, когда я проверяю, являются ли поля пустыми, даже если они продолжаются, не прося заполнить все поля. Поэтому я был бы признателен, если кто-нибудь скажет мне, что не так в этих строках кода. Благодарю.Неправильные SQL-данные?

$sql="SELECT username, email FROM table_name"; 
$result=mysqli_query($con,$sql); 

if($result === FALSE){ 
}else{ 
$row=mysqli_fetch_array($result); 
} 

if (empty($_POST['firstname']) || empty($_POST['lastname']) || empty($_POST['username']) || empty($_POST['email']) || empty($_POST['password']) || empty($_POST['password2'])) { 
if(!($_POST['username'] == $row['username']) && ($_POST['email'] == $row['email'])) { 

} else { 
    echo '<script type="text/javascript">' 
    , 'window.alert("That username or email is already in use.")' 
    , '</script>'; 
} 
} else { 
    echo '<script type="text/javascript">' 
    , 'window.alert("Please fill in all the fields.")' 
    , '</script>'; 
} 
+0

попытка вторя результаты запроса и $ _POST массив на экран:. Эхо $ _POST [ «имя пользователя»] и эхо $ row ['username'] для визуального сравнения. –

+0

Вы выбираете все строки в запросе, но получаете только первую строку. Вы должны добавить предложение WHERE и передать имя пользователя и адрес электронной почты, чтобы позволить движку MySQL выполнить поиск Сфокусируйтесь на том, чтобы сначала работать с валидацией, когда вы полностью протестировали это и заработали, перейдите к проверке проверки базы данных. Не пытайтесь решить сразу несколько проблем, разбейте его. – MrCode

+0

еще одно - ваш главный, если заявление введет вас только в том случае, если одно из полей в форме пуст. –

ответ

0

Попробуйте этот код:

SELECT username, email FROM table_name WHERE username="user" AND email="email"

Вам нужно передать информацию столбца запроса для сравнения с базой данных, или он возвращает все строки из базы данных. Следовательно, вы всегда получите возвращаемое значение, отличное от FALSE.

2

Если вы извлекли массив из базы данных с именем $row, вам необходимо пройти через этот массив и проверить, не является ли имя пользователя || электронной почты. (Обратите внимание, я переименовал $row -> $rows

if($result === FALSE){ 
}else{ 
$rows=mysqli_fetch_array($result); 
} 
if(isset($_POST['firstname']) && isset($_POST['lastname']) && isset($_POST['username']) && isset($_POST['email']) && isset($_POST['password']) && isset($_POST['password2'])){ 
    foreach ($rows as $row) { 
     if($row['username'] == $_POST['username'] || $row['email'] == $_POST['email']){ 
      echo '<script type="text/javascript">' 
      , 'window.alert("That username or email is already in use.")' 
      , '</script>'; 
      break; 
     } 
    } 
} 
else{ 
echo '<script type="text/javascript">' 
    , 'window.alert("Please fill in all the fields.")' 
    , '</script>'; 
} 

Надежда Я получил это все в порядке, с помощью планшета

+1

'mysqli_fetch_array' выбрал точно *** одну *** строку. – deceze

+0

'isset ($ var1, $ var2, $ var3)' вместо 'isset ($ var1) && isset ($ var2) && isset ($ var3)' – MrCode

+0

Я получил эту ошибку от этого? Предупреждения: Неверный аргумент поставляется для Еогеаспа() в /home/username/public_html/register.php по линии 106. линии 106 является в Еогеаспе ($ строки как $ подряд) { – TheQuantumBros

Смежные вопросы