2015-01-17 2 views
1

Ошибки:Попытка получить свойство не-объекта с тем, если функция

Извещение: Попытка получить свойство не-объекта в C: \ Users \ Густава \ Documents \ EasyPHP \ test2 \ register.php на линия 16
Примечание: Попытка получить свойство не-объекта в C: \ Users \ Густава \ Documents \ EasyPHP \ test2 \ register.php на линии 20 Код:

$exists = ''; 
$result = $connect->query('SELECT username FROM users WHERE username = '.$username.' LIMIT 1'); 
if ($result->num_rows == 1) { 
    $exists = 'u'; 
} 
$result = $connect->query('SELECT email from users WHERE email = '.$email.' LIMIT 1'); 
if ($result->num_rows == 1) { 
    $exists = 'e'; 
} 

16 линия:

if ($result->num_rows == 1) { 

20 линия:

if ($result->num_rows == 1) { 
+2

Ваш запрос не удался, но вы не обнаружили ошибок. 'if (! $ result) echo $ connect-> error;' Вероятно, потому что переменная '$ username' не так однозначно цитируется внутри строки SQL,' $ email'. –

+0

Если '$ username' является строковым значением, тогда его нужно указывать как строковое значение в вашем запросе, иначе SQL будет считать, что это имя столбца в вашей таблице пользователей –

+1

Но еще лучше, если вы используете подготовленные операторы/переменные связывания , когда вам не нужно использовать кавычки –

ответ

0

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

$exists = ''; 
    if($result = $connect->query('SELECT username FROM users WHERE username = "'.$username.'" LIMIT 1')){ 
     if($result->num_rows == 1){ 
     $exists = 'u'; 
     }else{ 
      die; 
     } 
    } 
    if($result = $connect->query('SELECT email FROM users WHERE email = "'.$email.'" LIMIT 1')){ 
     if($result->num_rows == 1){ 
     $exists = 'e'; 
     }else{ 
      die; 
     } 
    } 

Или в зависимости от того, как вы проверяете, если запрос был успешным, вы можете сделать:

$exists = ''; 
    if($result = $connect->query('SELECT username FROM users WHERE username = "'.$username.'" LIMIT 1')){ 
     if($result->num_rows == 1){ 
     $exists = 'u'; 
     } 
     return true; 
    }else{ 
     return false; 
    } 
    if($result = $connect->query('SELECT email FROM users WHERE email = "'.$email.'" LIMIT 1')){ 
     if($result->num_rows == 1){ 
     $exists = 'e'; 
     } 
     return true; 
    }else{ 
     return false; 
    } 

Или даже:

$exists = ''; 
    if($result = $connect->query('SELECT username FROM users WHERE username = "'.$username.'" LIMIT 1')){ 
     if($result->num_rows == 1){ 
     $exists = 'u'; 
     } 
     echo 'Success!'; 
    }else{ 
     echo 'Failure!'; 
    } 
    if($result = $connect->query('SELECT email FROM users WHERE email = "'.$email.'" LIMIT 1')){ 
     if($result->num_rows == 1){ 
     $exists = 'e'; 
     } 
     echo 'Success!'; 
    }else{ 
     echo'Failure'; 
    } 

Надеюсь, это поможет!

+0

Я отредактировал свой ответ для правильной проверки ошибок и некоторых логических ошибок, которые у меня были в коде. Хотя вы не можете использовать какие-либо из приведенных мной примеров, кроме изменений, внесенных в ваш оригинальный PHP, я хочу убедиться, что кто-либо, кто читает это сообщение, может извлечь из него выгоду различными способами. :) –

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