0

我的系统似乎有一些我无法解释的奇怪问题。我有以下代码片段,可用于连接到数据库并从数据库中读取数据

define('DB','products');
define('HOST','localhost');
define('DBPASS','password');
define('DBUSER','root');
define('DBTABLE','product_tb');
$conn=mysqli_connect(HOST,DBUSER,DBPASS) or die('Could not connect: ' . mysqli_error($conn));

但是它总是报错我无法与mysqli_connect建立连接。我尝试在另一个系统上运行此代码,它工作正常。这是两个警告和一个失败的连接错误。

警告:mysqli_connect() [function.mysqli-connect]: (28000/1045): Access denied for user 'root'@'localhost' (using password: NO) in D:\xampp\htdocs\products.php on line 7

警告:mysqli_error() 期望参数 1 为 mysqli,布尔值在第 7 行的 D:\xampp\htdocs\products.php 中给出 无法连接:

当我测试系统不需要密码时会发生这种情况,所以我将 DBPASS 留为空白,但是一旦我在真实系统上使用它,无论我是否遗漏了 DBPASS,它都会失败并出现完全相同的错误...... .我以为是缓存,但我重新启动了mysql和apache,但没有任何效果。如果你能提供一些帮助,谢谢。

4

2 回答 2

2

要检查连接错误,您应该使用 mysqli_connect_error() 而不是 mysqli_error()

这将解决您的错误消息之一。

$conn=mysqli_connect(HOST,DBUSER,DBPASS) or die('Could not connect: ' . mysqli_connect_error());

另一条错误消息是由数据库服务器中的无效权限引起的。阻止您访问数据库。就像@Dragon 评论的那样,您可以使用命令行中的用户名/密码组合登录吗?如果您没有 cmd 行访问权限,您是否有 php myadmin 或其他东西,您可以检查 user/pass/db 组合以确保它有效。

正如@MarcB 所说,明智的做法是使用只能访问服务器上特定数据库的登录名,而不是对所有数据库的root 访问权限。这样,如果您的代码被黑客入侵,他们将只能访问 1 个数据库(理论上)。

于 2012-05-14T03:55:51.780 回答
0

经过很长时间的忙碌后,我发现了这个——它实际上就在我的 cPanel->Home->MySQL 数据库中:

远程 MySQL 主机

“mysql2000.my-virtual-panel.com”是 MySQL 服务器的地址。当您连接到 MySQL 服务器时,您必须指定此主机。

$host="mysql2000.my-virtual-panel.com";

它应该有帮助。

于 2015-08-14T08:45:29.467 回答