警告:mysql_fetch_assoc()期望参数1是资源,给定对象

Art*_*una 4 php mysql

可能重复:
PHP错误:mysql_fetch_array()期望参数1是资源,给定布尔值

我似乎无法弄清楚我做错了什么.因此,当我提交表单时,我收到警告错误

注意:未定义的变量:第30行/Library/WebServer/Documents/ArturoLuna_Final/loginCheck.php中的dbusername

$username = $_POST['username'];
$password = $_POST['password']; 

if($username&&$password)
{
    require 'conn.php';
    $query = "SELECT * FROM  users WHERE username='$username'";
    $result = $mysql->query($query) or die(mysqli_error($mysql));
    $numrows = $result->num_rows;

    if ($numrows!=0)
    {
        while($row = mysql_fetch_assoc($result))
        { 
            $dbusername = $row['username'];
            $dbpassword = $row['password']; 
        }

        //check to see if they match!
        if($username==$dbusername&&$password==$dbpassword)
        { 
            echo "youre In!";
        }
        else
        echo "incorrect password!";

    }
    else
        die("that user is dead");

    //echo $numrows;

}

else

    echo ("Please Enter Username")
Run Code Online (Sandbox Code Playgroud)

我可能做错了什么?

Dav*_*dom 13

更改

while($row = mysql_fetch_assoc($result))
Run Code Online (Sandbox Code Playgroud)

while($row = $result->fetch_assoc())
Run Code Online (Sandbox Code Playgroud)

您错过了i函数名称,并混合了OO和过程样式代码,因此您混合了mysql_*结果资源和mysqli_result对象.


Lin*_*een 6

您将传统的PHP MySQL函数mysql_*与MySQLi接口混合在一起.在这种情况下,mysql_fetch_assoc()需要使用创建的资源句柄mysql_query().

要检索正确的结果,您需要使用MySQLi的方法:

$row = $result->fetch_assoc();
Run Code Online (Sandbox Code Playgroud)

当你处于它的时候,你可能想要考虑使代码不易受MySQL注入的影响.在将其插入查询字符串之前正确地转义 任何用户提供的输入,或者更好的是,使用MySQLi 参数绑定工具.