Php mysql_fetch_array()错误

Php mysql_fetch_array()错误,php,mysql,Php,Mysql,我试图从MySQL表中选择数据,但收到以下错误消息之一: mysql_fetch_array()希望参数1是给定的资源布尔值 这是我的代码: $username = addslashes( $_POST['user'] ); $password = addslashes( $_POST['pass'] ); $sqlQuery = "select * from users where username = '{$username}'"; $resultObj = mys

我试图从MySQL表中选择数据,但收到以下错误消息之一:

mysql_fetch_array()希望参数1是给定的资源布尔值

这是我的代码:

$username = addslashes( $_POST['user'] );
    $password = addslashes( $_POST['pass'] );

    $sqlQuery = "select * from users where username = '{$username}'";
    $resultObj = mysql_query( $sqlQuery );

    $row = mysql_fetch_array( $resultObj );

    if( $row['password'] == md5( $password ) )
    {
        session_start();
        $_SESSION['user_id'] = $row['user_id'];
        $_SESSION['name'] = $row['username'];
        header("Location:view_forum_list.php");
        exit();
    }
    else
    {
        $error = 1;
    }

将{$username}替换为$username。我的意思是从第3行删除大括号。

将第四行替换为:

$sqlQuery = "select * from users where username = '$username'";
使用


该错误通常意味着查询失败,因此mysql_query()返回false

您确实需要将代码库迁移到使用mysqli扩展或PDO。您正在使用的mysql_*扩展在PHP的5.5版(当前版本)中已被弃用,并将从PHP的7版(下一版本)中删除。如果服务器迁移到PHPVersion7,您或任何其他使用mysql_*扩展的站点将立即中断

本文将带您了解如何将您的代码库转换为使用PDO

迁移到mysqli_*扩展或PDO后,请确保养成以下习惯:

  • 验证数据:确保用户提交的数据是您期望的数据,例如,是否使用了任何非法字符(字符串中不允许使用的字符),是否使用了字符串而不是整数,等等
  • 使用准备好的语句:在第一次验证提交的数据后,将用户提交的数据发送到数据库时,始终使用准备好的语句
  • 另外,您真的需要从表中获取所有字段吗?SELECT子句中只应列出必需的字段,在不需要时获取所有字段会浪费带宽

    # This will check your query and count the record on the database 
    if( !$resultObj || mysql_num_rows($resultObj) == 0 ){
        $error = 1;
    }
    
    代码如下:

    <?php
    
        $username = addslashes( $_POST['user'] );
        $password = addslashes( $_POST['pass'] );
    
        $sqlQuery = "select * from users where username = '$username'";
        $resultObj = mysql_query( $sqlQuery );
    
        if( !$resultObj || mysql_num_rows($resultObj) == 0 ){
            $error = 1;
        }
        else{
    
            $row = mysql_fetch_array( $resultObj );
    
            if( $row['password'] == md5( $password ) ){
                session_start();
                $_SESSION['user_id'] = $row['user_id'];
                $_SESSION['name'] = $row['username'];
                header("Location:view_forum_list.php");
                exit();
            }
            else{
                $error = 1;
            }
    
        }
    
    ?>
    

    您能否显示“user”表的结构?这没有帮助。两者都是
    $sqlQuery=“select*from username='$username''的用户
    $sqlQuery=“从username='{$username}'的用户中选择*相同。试着打印两者。我也使用这种类型的查询,但数据不是从数据库获取的。你是从数据库获取数据吗???哈..哈…这是否意味着与我建议的不同??
    
    <?php
    
        $username = addslashes( $_POST['user'] );
        $password = addslashes( $_POST['pass'] );
    
        $sqlQuery = "select * from users where username = '$username'";
        $resultObj = mysql_query( $sqlQuery );
    
        if( !$resultObj || mysql_num_rows($resultObj) == 0 ){
            $error = 1;
        }
        else{
    
            $row = mysql_fetch_array( $resultObj );
    
            if( $row['password'] == md5( $password ) ){
                session_start();
                $_SESSION['user_id'] = $row['user_id'];
                $_SESSION['name'] = $row['username'];
                header("Location:view_forum_list.php");
                exit();
            }
            else{
                $error = 1;
            }
    
        }
    
    ?>