用户'root'@'localhost'的Php Post插入错误访问被拒绝(使用密码:YES)

Posted

技术标签:

【中文标题】用户\'root\'@\'localhost\'的Php Post插入错误访问被拒绝(使用密码:YES)【英文标题】:Php Post Insert Error Access denied for user 'root'@'localhost' (using password: YES)用户'root'@'localhost'的Php Post插入错误访问被拒绝(使用密码:YES) 【发布时间】:2016-01-16 14:04:44 【问题描述】:

我正在使用 php 将数据发布到 mysqlserver。 (休息服务) 问题是我收到了这个错误:

连接失败:用户 'root'@'localhost' 的访问被拒绝(使用 密码:YES)。

我将查询从插入更改为选择语句,它可以工作,我可以检索数据,但我似乎无法进行插入。 我检查了权限,甚至更改了密码。 我敢肯定这个问题之前已经被问过,但我尝试过的解决方案不起作用问题可能是上下文所独有的。 我不确定它是代码还是什么?请帮忙。

<?php

$servername = "localhost";
$username = "root";
$password = "****";
$dbname = "TripBuddy";

$name = $_POST['Name'];
$surname = $_POST['Surname'];
$email = $_POST['Email'];
$password = $_POST['Password'];

// Create connection
 $conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
 if ($conn->connect_error) 
 die("Connection failed: " . $conn->connect_error);
  

 $sql = "INSERT INTO 'TripBuddy'.'AppUser01' ('Name', 'Surname', 'Email',              'Password') VALUES ('$name','$surname','$email','$password');";

 if ($conn->query($sql) === TRUE) 
  echo "New record created successfully";
   else 
   echo "Error: " . $sql . "<br>" . $conn->error;
  

  $conn->close();
  ?>

【问题讨论】:

我愿意打赌,这是因为您对 $password 使用了相同的变量。改变其中之一。我敢打赌它会起作用的。 quotestable name and column name 换成backtick 但是,您的查询在这里失败,一旦您更改密码变量,您将看到错误。您需要删除表和列的引号。在使用我的两个 cmets 时,应该可以。编辑:正如@Saty 所说;记号,而不是引号。 另外使用$conn-&gt;affected_rows; 来检查你的数据是否插入数据库!! 【参考方案1】:

这里发生的情况是,您在 DB 和 POST 数组中都使用了 $password

您需要更改其中一个,因为它是冲突的。我以前见过这种情况。

那么您的查询使用的是常规引号而不是刻度。

$sql = "INSERT INTO `TripBuddy`.`AppUser01` (`Name`, `Surname`, `Email`, `Password`) 

        VALUES ('$name','$surname','$email','$password');";

您当前的代码对SQL injection 开放。使用mysqli_* with prepared statements,或PDOprepared statements

编辑:

正如萨蒂所说;使用mysqli_affected_rows() 表示真相

http://php.net/manual/en/mysqli.affected-rows.php

密码

我还注意到您可能以纯文本形式存储密码。不建议这样做。

使用以下方法之一:

CRYPT_BLOWFISH crypt() bcrypt() scrypt() On OPENWALL PBKDF2 PBKDF2 on PHP.net PHP 5.5 的 password_hash() 函数。 兼容包(如果 PHP https://github.com/ircmaxell/password_compat/

其他链接:

PBKDF2 For PHP

error reporting 添加到文件顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code

旁注:显示错误应该只在暂存阶段完成,而不是在生产阶段。

确保您的表单确实使用 POST 方法,并且您的输入都具有匹配的名称属性。

即:name="Name" 用于您的 POST 数组 $_POST['Name'] 等。

请注意,Namename 是两种不同的动物,并且区分大小写。

【讨论】:

【参考方案2】:

您为用户名 root 提供的密码似乎不正确,有时 localhost root 设置为无需密码即可工作,因此您可以尝试通过提供 $password = ""; 来检查它如果返回错误,则需要输入正确的密码才能创建连接

【讨论】:

以上是关于用户'root'@'localhost'的Php Post插入错误访问被拒绝(使用密码:YES)的主要内容,如果未能解决你的问题,请参考以下文章

“连接失败:用户'root'@'localhost'的访问被拒绝(使用密码:YES)”来自php函数[重复]

用户'root'@'localhost'的Php Post插入错误访问被拒绝(使用密码:YES)

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

PHP和MySQLi错误 - 访问被拒绝用户'root'@'localhost'(使用密码:NO)[复制]

错误:(1045)用户'root'@'localhost'的访问被拒绝(使用密码:否)

使用 MAMP 服务器拒绝用户 'root'@'localhost' 的访问(使用密码:YES)