Php 获得;无法获取数据:拒绝用户访问''@';本地主机';到数据库';学院'&引用;

Php 获得;无法获取数据:拒绝用户访问''@';本地主机';到数据库';学院'&引用;,php,Php,我正在尝试以下代码: index.php <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <?php include 'config.php'; if (!$conn)

我正在尝试以下代码:

index.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>

        <?php
        include 'config.php';


        if (!$conn) {
            die('Could not connect: ' . mysql_error());
        }

        $sql = 'SELECT name, gender, age FROM student';
        mysql_select_db('college');
        echo $sql;
        //echo $conn[] ;
        $retval = mysql_query($sql, $conn);

        if (!$retval) {
            die('Could not get data: ' . mysql_error());
        }

        while ($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
            echo "Name :{$row['name']}  <br> " .
            "Gender : {$row['gender']} <br> " .
            "Age : {$row['age']} <br> " .
            "--------------------------------<br>";
        }

        echo "Fetched data successfully\n";

        mysql_close($conn);
        ?>

    </body>
</html>
<?php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'college');

/* Attempt to connect to MySQL database */
$conn = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
#$conn = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD);

if($conn === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
?>
根据线程,我已运行:

GRANT ALL ON *.* to root@'%' IDENTIFIED BY 'root';
在phpAdmin,它成功了。但仍然得到同样的错误

如果我没记错的话,我以前可以使用
root
user使用
college
数据库,但现在我遇到了这个异常。这里出了什么问题?

函数返回一个对象,您必须使用该对象调用数据库


有关更多信息,请访问此链接:

我知道问题出在哪里

config.php
中,使用
mysqli\u connect
初始化连接——注意
i
mysql
之后

但是稍后您将使用
mysql\u查询
,no
i
。这是另一个试图使用默认(空)凭据连接的驱动程序。这就是为什么在错误消息中看到空用户名


因此,要解决这个问题,请将所有的
mysqli\uucode>函数替换为
mysqli\ucode>版本。

不要将mysql-use-mysqli或direct-PDO用于数据库连接。我想我使用了
mysqli\u-connect
这很奇怪,您显然将“root”作为第二个参数传递,但错误消息说用户是“@”本地主机“,即用户名部分为空字符串。你能再检查一下那个零件吗?可能将文字值放在那里,而不是常量(仅用于测试)。
GRANT ALL ON *.* to root@'%' IDENTIFIED BY 'root';
include 'config.php';

// Make a connection
$link = mysqli_connect($host, $username, $pw, $db);

// Create query.
$sql = 'SELECT name, gender, age FROM student';

// Apply query.
$result = mysqli_query($link, $sql);