(警告:mysql_fetch_assoc():提供的参数不是有效的 MySQL 结果资源),除非查询返回数据


(Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource) except the query returns data

Ok. 所以我正在运行的这段代码根本不起作用。 当我直接在服务器上运行查询时,它起作用了,但这在我的网页上不起作用。 我已经浏览了所有帮助页面,但无法查明错误。 请帮忙。

function getUserData($id) {
        $servername = "******************";
        $dbname = "***********";
        $sql_username = "************";
        $sql_password = "****************";
        $conn = mysql_connect($servername, $sql_username, $sql_password, $dbname);
        $userData = array();
        $sql = mysql_query("SELECT * FROM users WHERE user_id ='".$id."'");
        while ($row = mysql_fetch_assoc($sql)) {
        $userData['id'] = $row['id'];   
        $userData['user_name'] = $row['username'];
        $userData['password'] = $row['password'];       
        $userData['aboutme'] = $row['aboutme'];     
        $userData['first_name'] = $row['fname'];
        $userData['last_name'] = $row['lname'];     
        $userData['gender'] = $row['gender'];
        $userData['user_email'] = $row['email'];    
        $userData['country'] = $row['country']; 
        $userData['language'] = $row['language'];   
        $userData['send_emails'] = $row['sendemails'];
        $userData['date'] = $row['date'];           
        }
        return $userData;
    }
    function getUserId($username) {
        $servername = "*********************";
        $dbname = "*********";
        $sql_username = "***********";
        $sql_password = "***********";
        $conn = mysql_connect($servername, $sql_username, $sql_password, $dbname);
        $sql = mysql_query("SELECT user_id FROM users WHERE user_name = '".$username."'");
        while ($row2 = mysql_fetch_assoc($sql)) {
            return $row2['user_id'];            
        }
    }

这就是所谓的功能。

    $userData = getUserData(getUserId($_SESSION['valid_user']))

mysql_connect($servername, $sql_username, $sql_password, $dbname)

  • mysql_connect()只接受 3 个基本参数:

bool mysql_select_db ( 字符串 $database_name [, 资源 $link_identifier = NULL ] )

根据手册:

http://php.net/manual/en/function.mysql-select-db.php

  • 第 4 个参数不适用于您的想法。这是mysqli_()语法。

您需要使用mysql_select_db() http://php.net/manual/en/function.mysql-select-db.php

从手册中还:

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Not connected : ' . mysql_error());
}
// make foo the current db
$db_selected = mysql_select_db('foo', $link);
if (!$db_selected) {
    die ('Can''t use foo : ' . mysql_error());
}

mysql_connect()

资源mysql_connect ([ 字符串 $server = ini_get("mysql.default_host") [, 字符串 $username = ini_get("mysql.default_user") [,

字符串 $password = ini_get("mysql.default_password") [, bool $new_link = false [, int $client_flags = 0 ]]]]] )

打开或重用与 MySQL 服务器的连接。


  • 我还需要声明您当前的代码对SQL注入开放。将mysqli与预准备语句一起使用,或将 PDO 与预准备语句一起使用,它们要安全得多