mysql_connect()不能在类中工作

时间:2017-07-27 05:25:19

标签: php mysql

刚刚将我的网站移至新主机。在新服务器上,如果不使用类或方法内部调用而不是来自_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);

在课程之外或在方法之内然后它起作用......但是,我应该(像过去一样)能够在构造()中连接。

3 个答案:

答案 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 可选。指定要使用的套接字或命名管道。