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

时间:2015-03-18 18:53:51

标签: php mysql mysqli

我有一些PHP代码使用MySQLi将数据插入MySQL数据库。 PHP代码:

  function insert_db($lat, $lng, $date, $user){
  require('db_info_table.php');
  $conn = mysqli_connect($servername, $username, $password, $dbname);
  if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
    return false;
  }
  $lat  = mysql_real_escape_string($lat); // Sanitize data to prevent SQL injection
  $lng  = mysql_real_escape_string($lng);
  $date  = mysql_real_escape_string($date);
  $user  = mysql_real_escape_string($user); // << ERROR
  $sql = "INSERT INTO table (lat, lng, date, user)
  VALUES ('$lat', '$lng', '$date', '$user')";

  if (mysqli_query($conn, $sql)) {
    return true;
  } else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    return false;
  }
  mysqli_close($conn);
  }

连接详细信息位于同一目录中的单独文件中,它看起来像这样

  $servername = "localhost";
  $username = "user123";
  $password = "pass123";
  $dbname = "db123";

我得到了这些错误,我非常确定会导致另一个错误

  

mysql_real_escape_string():拒绝用户访问&#39; unset_username&#39; @&#39; localhost&#39; (使用密码:否)
  mysql_real_escape_string():无法在

中建立到服务器的链接

两个错误都出现在同一行(查看代码)。

1 个答案:

答案 0 :(得分:2)

您似乎使用 mysql i 库连接到服务器,但之后尝试使用 mysql 库中的函数来保护你串起来。请改用 mysql i _real_escape_string()。

它基本上与mysql_real_escape_string()做同样的事情但是需要两个参数:第一个是连接链接,第二个是需要保护的变量。所以你的代码看起来像这样:

  $lat  = mysqli_real_escape_string($conn, $lat);
  $lng  = mysqli_real_escape_string($conn, $lng);
  $date  = mysqli_real_escape_string($conn, $date);
  $user  = mysqli_real_escape_string($conn, $user);