Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php oop pdo连接被拒绝?_Php_Pdo - Fatal编程技术网

php oop pdo连接被拒绝?

php oop pdo连接被拒绝?,php,pdo,Php,Pdo,我试图使用连接到数据库,但我得到这个错误,我在php终端上运行这个 我查阅了其他类似的资料,但没有找到我想要的答案 有什么建议或最佳实践吗 SQLSTATE[HY000] [2002] Connection refusedsomething went wrong Db.php <?php error_reporting(-1); class Db{ private $db_host; private $db_user; private $db_name;

我试图使用连接到数据库,但我得到这个错误,我在php终端上运行这个

我查阅了其他类似的资料,但没有找到我想要的答案

有什么建议或最佳实践吗

SQLSTATE[HY000] [2002] Connection refusedsomething went wrong
Db.php

<?php 

error_reporting(-1);

class Db{

    private $db_host;
    private $db_user;
    private $db_name;
    private $db_pass;

    public function __construct()
    {
        $this->db_host = "127.0.0.1";
        $this->db_user = "root";
        $this->db_pass = "";
        $this->db_name = "eli9";

        try{
            $pdo = new PDO("mysql:host=127.0.0.1;dbname=eli9", $this->db_user, $this->db_pass);
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

            echo "connected sucessfully \n";

        }

        catch(PDOexception $e){
            echo $e->getMessage();

            echo "something went wrong \n";
        }

    }


}
试试这个,对我有用

$pdo = new PDO("mysql:host=$this->db_host;dbname=$this->db_name", $this->db_user, $this->db_pass);
您将变量设置为
$this->db_host=“127.0.0.1”
,但未用于连接

在连接并使用
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_警告)之前,不要使用类来尝试此操作
检查是否有任何错误

还可以尝试端口
8889

try {
    $db = new PDO("mysql:host=127.0.0.1;port=3306,dbname=eli9", 'root', '');
    $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
    echo "connected";
    } 
catch (PDOException $e){
    echo $e->getMessage();
    }

在@addie代码的帮助下,我找到了问题所在,原因如下

1) 我最初没有使用端口号

2) 我把端口号改为8889,而不是3306

下面是Db.php的最终代码

<?php 

error_reporting(-1);

class Db{

    private $db_host;
    private $db_user;
    private $db_name;
    private $db_pass;

    public function __construct()
    {
        $this->db_host = "127.0.0.1";
        $this->db_user = "root";
        $this->db_pass = "root";
        $this->db_name = "eli9";

        try {
            $db = new PDO("mysql:host=127.0.0.1;port=8889,dbname=eli9", 'root', 'root');
            $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
            echo "connected";


        } 
        catch (PDOException $e){
            echo $e->getMessage();
        }


    }


}

谢谢,但还是不起作用,我最近更新到了PHP7,之前我用的是5.1,我想我知道了,你在用MAMP吗?
<?php 

error_reporting(-1);

class Db{

    private $db_host;
    private $db_user;
    private $db_name;
    private $db_pass;

    public function __construct()
    {
        $this->db_host = "127.0.0.1";
        $this->db_user = "root";
        $this->db_pass = "root";
        $this->db_name = "eli9";

        try {
            $db = new PDO("mysql:host=127.0.0.1;port=8889,dbname=eli9", 'root', 'root');
            $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
            echo "connected";


        } 
        catch (PDOException $e){
            echo $e->getMessage();
        }


    }


}