Php 尝试使用if函数获取非对象的属性

Php 尝试使用if函数获取非对象的属性,php,Php,错误: 注意:试图在第16行的C:\Users\Gustavs\Documents\EasyPHP\test2\register.php中获取非对象的属性 注意:试图在第20行的C:\Users\Gustavs\Documents\EasyPHP\test2\register.php中获取非对象的属性 代码: 16行: if ($result->num_rows == 1) { 20行: if ($result->num_rows == 1) { 试试这个: $exist

错误:

注意:试图在第16行的C:\Users\Gustavs\Documents\EasyPHP\test2\register.php中获取非对象的属性
注意:试图在第20行的C:\Users\Gustavs\Documents\EasyPHP\test2\register.php中获取非对象的属性 代码:

16行:

if ($result->num_rows == 1) {
20行:

if ($result->num_rows == 1) {
试试这个:

    $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';
    }

我希望这有帮助

您的查询失败,但未检查错误<代码>如果(!$result)回显$connect->错误这可能是因为变量
$username
在SQL字符串中没有正确地单引号引起来,
$email
同样如此。如果
$username
是字符串值,则需要在查询中将其作为字符串值引起来,else SQL将假定它是users表中的一个列名,但更好的是,如果您使用准备好的语句/绑定变量,而不需要使用quotesSee获取有关引用的信息,但是这个问题可以避免,同时也可以通过在MySQLi中使用来提高安全性。虽然除了我对您的原始PHP所做的修改之外,您可能不会使用我提供的任何示例,但我想确保阅读本文的任何其他人都能够从中受益
    $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';
    }