用户'root'@'localhost'访问被拒绝(未使用密码)。

3

我正在使用PHP和MySQL(XAMPP)。 我正在尝试使用PDO将我的php文件连接到数据库。 但是它显示以下错误(mysql_query():用户'root'@'localhost'被拒绝访问(未使用密码))。 我不知道问题出在哪里。 这是我第一次使用PDO。 请有人告诉我问题在哪里以及解决方法。 这是我的代码。

$dsn = 'mysql:dbname=abc;host=localhost';
$dbuser = 'user';
$dbpass = 'pass';

$params = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC);

$pdo = new PDO($dsn, $dbuser, $dbpass, $params);

嗯,看起来你的错误不在那段代码上。这是整个文件吗? - pala_
你的代码中使用了 mysql_query() 吗? - Jens
看起来你的数据库没有设置密码,但是你在代码中提供了一个。尝试 $dbpass = '';(using password: NO) 表示该数据库未配置密码。 - Ashwani Goyal
更新了吗?已解决了吗? - Devon
不行啊,我无法连接数据库。那我怎么能使用 $pdo->prepare('SELECT * FROM table WHERE id = ?'); 呢? - Akshay Vaghasiya
2个回答

3
$dsn = 'mysql:host=localhost;dbname=test';
$dbuser = 'user';
$dbpass = 'pass';

$params = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC);

$pdo = new PDO($dsn, $dbuser, $dbpass, $params);

您在这里犯了一个错误 mysql:dbname = abc; host = localhost
                            ^^^^^^^^^^

您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Devon
@Devon.. 我没有使用mtsql_query()。 - Akshay Vaghasiya
@AkshayVaghasiya,请提供您收到的实际错误消息,因为您发布的错误消息中明显包含mysql_query()。 - Devon
致命错误:在/home/sundarva/public_html/BHAKTIRANG.COM/map/php/getroutes.php的第5行抛出未捕获的异常'PDOException',消息为'SQLSTATE[42000]:语法错误或访问冲突:1305 PROCEDURE sundarva_map.prcGetRoutes不存在'。堆栈跟踪:#0 /home/sundarva/public_html/BHAKTIRANG.COM/map/php/getroutes.php(5):PDOStatement->execute() #1 {main}。 - Akshay Vaghasiya

1

好的,使用PDO时不要使用mysql_query()。您应该使用$pdo->query(),或者更好的是使用预处理语句$pdo->prepare()

mysql_query()来自已弃用的mysql API。

$pdo = new PDO($dsn, $dbuser, $dbpass, $params);
$stmt = $pdo->prepare('SELECT * FROM `table` WHERE id = ?');
$stmt->execute( [ $_GET['id'] ] );
$row = $stmt->fetch();

我无法连接数据库。那么我该如何使用 $pdo->prepare('SELECT * FROM table WHERE id = ?');? - Akshay Vaghasiya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接