提问人:Christine268 提问时间:5/21/2015 最后编辑:MachavityChristine268 更新时间:10/9/2015 访问量:1210
运行 PHP5:对 MySQLi 连接的访问被拒绝,但 MySQL 成功
Running PHP5: access denied to MySQLi connection but success for MySQL
问:
我运行了此代码以获得下图所示的输出:
<?php
phpinfo();
?>
麻烦的是,我无法弄清楚为什么会这样:
$conn = @mysql_connect('host', 'user', 'pass') or die(mysql_error());
@mysql_select_db('dbName') or die(mysql_error());
$query="SELECT * FROM Clients";
$result = @mysql_query($query) or die(mysql_error());
if ($result)
{
$outp = "";
while ($row = mysql_fetch_assoc($result))
{
if ($outp != "") {$outp .= ",";}
$outp .= '{"ClientID":"' . $row["cID"] . '",';
$outp .= '"ClientsName":"' . $row["clientsName"] . '"}';
}
mysql_free_result($result);
}
$outp ='{"records":['.$outp.']}';
echo($outp);
但这并不意味着:
$conn = new mysqli("host", "user", "pass", "dbName");
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
$result = $conn->query("SELECT * FROM Clients");
$outp = "";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "") {$outp .= ",";}
$outp .= '{"ClientID":"' . $rs["cID"] . '",';
$outp .= '"ClientsName":"' . $rs["clientsName"] . '"}';
}
$outp ='{"records":['.$outp.']}';
$conn->close();
echo($outp);
我得到的错误是:
连接失败:用户“user”@“host”对数据库“dbName”的访问被拒绝
我读到只要 PHP5 在运行,MySQLi 也已经安装好了。我还需要检查什么?也许我的代码做错了什么?这是我第一次尝试MySQLi,我已经多年没有连接到数据库了,不得不翻阅旧代码,只是为了获得旧的SQL方式连接到数据库。
答:
0赞
Peter B
6/2/2015
#1
您的代码看起来非常好。
确保身份验证详细信息中没有拼写错误。
其次,MySQL用户绑定到主机。例如。如果从远程主机进行连接,请确保已使用 % 通配符 like 设置用户 like 或允许所有主机。root@localhost
[email protected]
root@%
希望这会有所帮助。
0赞
TheSatinKnight
10/9/2015
#2
不久前,我遇到了一个 sql 客户端挑战,其中 php 版本导致客户端出于神秘的安全原因拒绝连接到 mysqli 中的服务器。为了解决这个问题,我不得不打开mysql的日志记录(调试日志记录),并在尝试后检查服务器上的调试日志。你的问题听起来很熟悉,甚至可能是同一个问题。如果我没记错的话,它需要更改密码类型。
评论