2015-10-21 3 views
-1

Я пытаюсь проверить, существует ли в моей базе данных имя пользователя или почта, к сожалению, это не сработает.Проверьте, нет ли имени пользователя, электронной почты в mysql db

Есть ли у кого-нибудь идея, где я терпеть неудачу?

Мой код:

<?php 
    require_once('handling/database.php'); 
    if(!empty($_POST)){ 
     $username = $_POST['username']; 
     $email = $_POST['email']; 
     $password = $_POST['password']; 
     $database = new database; 
     $database->connect(); 

     $user_check = $database->execute_query("SELECT * FROM Users WHERE Username = '" . $username . "'"); 
     $email_check = $database->execute_query("SELECT * FROM Users WHERE Email = '" . $email . "'"); 

     if($user_check && mysql_num_rows($user_check) > 0){ 
      echo 'The following username is already in use: ' . $username; 
     }else if($email_check && mysql_num_rows($email_check) > 0){ 
      echo 'The following email is already in use: ' . $email; 
     }else{ 
      $results = $database->execute_query("INSERT INTO Users (Username, Email, Password) VALUES ('" . $username . "', '" . $email . "', '" . $password . "')"); 
      if($result = 'false'){ 
       echo 'The following account was created: ' . $username; 
      }else{ 
       echo 'Error: Could not create the following account: ' . $username; 
      } 
     } 
    } 
?> 

И функция execute_query из моего database.php класса:

function execute_query($sql) { 
    if ($results = $this->_mysqli->query($sql)) { 
    return $results; 
    } 
    else { 
    return false; 
    } 
} 

создание Счет отлично работает, проверка имени пользователя и проверка электронной почты не ,

+3

'if ($ result = 'false')' должно быть возможно

+1

, пожалуйста, включите error_reporting() и проверьте, какие ошибки вы получите ... –

+0

sidenote: не собираюсь жить с этим; не так, как вы храните пароли в виде обычного текста. –

ответ

3

Поскольку класс database использует расширение mysqli, вы не можете использовать функции mysql_XXX. Вам нужно использовать mysqli_num_rows.

if ($result = 'false') 

есть две проблемы: во-первых, вы должны использовать == или === для сравнения значений, = для задания. Во-вторых, 'false' - это строка, потому что вы помещаете ее в кавычки, но функция возвращает логическое значение false. Оно должно быть:

if ($result == false) 

или просто:

if (!$result) 

Другая проблема заключается в том, что переменная вы назначаете из запроса $results, но тогда вы проверяете $result (не s в конце).

+0

Я собирался закрыть этот вопрос с http://stackoverflow.com/questions/17498216/can-i-mix-mysql-apis-in-php, но есть и другая проблема: if ($ result = 'false') 'и по двум причинам, возможно 3. –

+0

Обновлен ответ, чтобы объяснить возникшую проблему. – Barmar

+0

'$ results = $ database ...' ;-) а не '$ result' –

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