用户''@ localhost'拒绝访问(使用密码:否)

时间:2013-02-22 00:48:56

标签: php mysql

尝试使用以下代码连接到localhost sql db(此时不对查询执行任何操作只是希望查询执行):

<?php

$host     = "localhost";
$port     = 3306;
$socket   = "";
$user     = "root";
$password = "Password1";
$dbname   = "CIIP_WIKI";

$con = new mysqli($host, $user, $password, $dbname, $port);

if(!$con)
{
echo ("db connection failed!");
die ('Could not connect to the database server' . mysqli_connect_error());
}

else {
    echo ("db connection established.");
    echo ("<br/>");
    }

$query = sprintf("SELECT first_name FROM actor WHERE actor_id='1'");

$result = mysql_query($query);

$con->close();

?>

我不断得到以下内容......

Welcome

db connection established.

Warning: mysql_query(): Access denied for user ''@'localhost' (using password: NO) in C:\Program Files (x86)\EasyPHP-12.1\www\Cisco Wiki\index.php on line 31

Warning: mysql_query(): A link to the server could not be established in C:\Program Files (x86)\EasyPHP-12.1\www\Cisco Wiki\index.php on line 31

为什么这不起作用?

2 个答案:

答案 0 :(得分:16)

这是因为您使用mysqli_创建了连接,然后使用mysql_尝试获取结果。它们是不同的API。

<?php
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');

if (!$link) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}

echo 'Success... ' . mysqli_get_host_info($link) . "\n";

mysqli_close($link);
?>

See the manual

答案 1 :(得分:0)

只要您尝试执行没有有效连接对象的查询,就会记录此警告。

在你的情况下你你有一个有效的连接对象,但你在使用mysql执行查询时使用mysqli创建了它。这是两个不同的API,所以mysql_query函数正在寻找一个mysql连接对象而没有找到它。