由于某种原因,用户''@ localhost'的访问被拒绝(使用密码:否)?

时间:2013-08-17 07:45:26

标签: php

<?php
$con=mysqli_connect("localhost","root","123456","astralms");

if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$username = htmlspecialchars(mysql_real_escape_string($_GET['username']));

$result = mysqli_query($con,"SELECT * FROM accounts WHERE name = '$username'");

while($row = mysqli_fetch_array($result))
  {
    echo $row['gm'];
    echo "<>";
    echo $row['vpoints'];
    echo "<>";
    echo $row['ACash'];
   }
?>

这是我的代码。所有信息都是100%正确的。然而,即使我确实输入了密码,它的行为就像我没有。

为什么? 谢谢!

2 个答案:

答案 0 :(得分:3)

你有一个mysqli连接,所以你不想使用mysql_real_escape_string(),而是想要使用mysqli_real_escape_string()

您看到的错误是由于mysql_real_escape_string()尝试建立自己的连接,因为没有使用旧api的连接处于活动状态。

编辑:mysqli_real_escape_string将与数据库的连接作为第一个参数,因此在您的情况下,您可以将其称为;

mysqli_real_escape_string($con, $_GET['username'])

答案 1 :(得分:3)

您正在使用旧的,已弃用的mysql函数来调用mysql_real_escape_string

这两个扩展名有不同的连接,不要混用它们。

对转义函数的调用需要有效连接,因为转义必须知道当前的编码设置。 mysql扩展没有连接,并使用php.ini中的默认参数打开一个连接。幸运的是,它不能用于这些。