刚刚将我的网站移至新主机。在新服务器上,如果不使用类或方法内部调用而不是来自_construct,则mysql_connect()可以正常工作。从_construct连接时,将显示以下错误: 用户访问被拒绝' root' localhost' (使用密码:否)...我的配置将用户定义为不是root用户,而是USERNAME,并提供密码。
PHP 5.6,MySQL 5.5,Linux
班级档案
function __construct(){
error_reporting(E_ERROR);
$dbhost = 'localhost';
$dbuser = 'USERNAME';
$dbpass = 'PASSWORD';
$dbname = 'DATABASENAME';
$this->urlAppPath = "http://www.myurl.com/CD/";
// connect to the database
$this->db = mysql_connect($dbhost, $dbuser, $dbpass) or die("Connection Error: " . $SQL);
mysql_select_db($dbname);
}
function validatePerson($personID) {
$SQL = "SELECT *,COUNT(*) AS total FROM zen_customers WHERE customers_classware_id = '$personID'";
$result = mysql_query( $SQL ) or die("Could not execute query 1 . ".$SQL." ".mysql_error()." & ". $dbhost ." ".$dbuser ." ".$dbpass." ".$dbname);
}
调用方法文件:
require_once('./clsCart.php');
$myclass = new clsCart();
$result2 = $myclass->validatePerson($personID);
注意 如果我在文件中定义并调用我一直试图调用方法的连接...而不是调用它的方法。如果我在方法中定义并调用连接它可以工作......但是如果我在construct()中定义并调用连接它不起作用...错误"用户访问被拒绝' root&# 39; @'本地主机' (使用密码:否)"。这似乎是某些服务器特有的......无论使用PHP 5.6还是更低版本。 MySQL 5.6或更低版本。
所以,如果我使用:
$dbhost = 'localhost';
$dbuser = 'USERNAME';
$dbpass = 'PASSWORD';
$dbname = 'DATABASENAME';
// connect to the database
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die("Connection Error: " . $SQL);
mysql_select_db($dbname);
在课程之外或在方法之内然后它起作用......但是,我应该(像过去一样)能够在构造()中连接。
答案 0 :(得分:-1)
1)请发布有效的方式(班级以外的方式)。
2)尽快停止使用my_sql *
错误是自我解释:访问被拒绝用户' root' @' localhost'
意味着到目前为止一切正常(您已连接到数据库),但您尝试登录的用户未经授权。 您传递给登录的凭据很可能是错误的。 检查新的主机名,用户名和密码,并正确更新这些数据:
{{1}}
无论如何,如果你有一个工作脚本,请发布,所以我们可以更好地理解。
答案 1 :(得分:-1)
这似乎与服务器问题有关。从__contruct()仅识别数据库默认用户信息。应用程序中的其他任何位置都使用为数据库创建的用户,但该构造仅在使用此服务器上的默认数据库用户时才会连接。其他服务器没有此问题,因此任何具有所有权限的数据库用户都可以使用。
答案 2 :(得分:-3)
您必须使用mysqli_connect。请不要在PHP 5.5.0及更高版本中使用它已弃用的mysql_connect。如果您仍然遇到问题,请告诉我们。
以下代码为mysqli_connect:
<?php
$con = mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>
定义和用法 mysqli_connect()函数打开一个与MySQL服务器的新连接。
<强> 语法 强>
mysqli_connect(host,username,password,dbname,port,socket);
参数说明
port 可选。指定尝试连接MySQL服务器的端口号。
socket 可选。指定要使用的套接字或命名管道。