0

我想要一个包含所有数据库信息(dbname、host、username、password)的通用 php 文件

但是当我在 index.php 中包含页面时,我收到了这个错误:

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

连接.php

<?php
class dbconnect{
    private $host = '**'; 
    private $user = '**';
    private $pass = '**';
    public $con;

function Connect($db = '**') {

    if($db=='**'){
        $this->host="localhost";
        $this->user="**";
        $this->pass="**";
        $db="**";
    }else{
                $this->host="**";
                $this->user="**";
                $this->pass="**";
    }

    $this->con = mysql_connect($this->host,$this->user,$this->pass);
    if (!$this->con)
      {
        die('Could not connect: ' . mysql_error());
      }
    $blaa = mysql_select_db($db, $this->con);
    mysql_query("SET NAMES UTF8");
    return $blaa;
}

function Disconnect() {
    //$this->con = mysql_connect($this->host,$this->user,$this->pass);
    mysql_close();
}
}
?>

我确信 ** 信息是正确的,因为当我将其指定为:

$con=mysqli_connect("example.com","example","password","my_db");

在 index.php 中它可以工作

4

4 回答 4

1

需要注意的是,您的测试用例实际上并不能证明它有效。

这个输出是什么:

$conn = mysql_connect("example.com", "user", "password");
if (!$conn) {
    die('Could not connect: ' . mysql_error());
}

因为如果没有它,您不一定会获得失败的信息。

最重要的是,为了调试目的,让我们稍微简化一下你的类:

class dbconnect
{
    private $host = '**';
    private $user = '**';
    private $pass = '**';
    public $con;

    public function Connect($host = "localhost", $user = "root", $pass = "")
    {
        $this->host = $host;
        $this->user = $user;
        $this->pass = $pass;

        $this->con = mysql_connect($this->host, $this->user, $this->pass);
        if (!$this->con) {
            die('Could not connect: ' . mysql_error());
        }

        $blaa = mysql_select_db($db, $this->con);
        mysql_query("SET NAMES UTF8");

        return $blaa;
    }

    public function Disconnect()
    {
        mysql_close($this->con);
    }
}

现在你会得到什么

$db = new dbconnect("example.com", "user", "password");

确保您使用的凭据有效,并且您没有通过这些方法遇到默认值或不正确的变量分配等问题。

现在,如果您不想提供这些值,您可以简单地:

$db = new dbconnect();

公共服务声明

查看 PHP 的PDO至少(但实际上,只使用 PDO)mysqli替代方案。PHP 的 mysql 扩展并不安全,你不应该在任何环境中使用它。

于 2019-01-10T14:34:26.767 回答
0

如果连接信息正确,请检查您的 MySQL 用户的主机访问权限:

SELECT user, host FROM mysql.user

如果设置了“localhost”,则用户只能在本地访问数据库,否则“%”将打开访问。

于 2013-11-11T13:45:52.523 回答
0

通常这是连接凭据的问题。

检查您是否可以使用您为该网站设置的详细信息登录到您的 mysql。

mysql -u 阿帕奇 -p

然后它会要求您输入密码。

如果该登录不起作用,那么您的该用户的 mysql 帐户有问题。

于 2013-11-11T14:09:40.280 回答
0

您使用不正确的参数进行访问。只需转储行中的变量$this->con = mysql_connect($this->host,$this->user,$this->pass);。您可以使用调试器或echo打印指令。

此外,使用 PDO 扩展来访问数据库。更好! 为什么我不应该在 PHP 中使用 mysql_* 函数?

于 2019-01-10T14:23:05.043 回答