【问题标题】:php oop pdo connection refused?php oop pdo 连接被拒绝?
【发布时间】:2017-05-21 00:37:06
【问题描述】:

我正在尝试使用连接到数据库,但是我得到了这个错误,我在 php 终端上运行它。

我查看了其他来源以及类似 one 的信息,但没有找到我想要的答案

有什么建议或最佳实践吗?

SQLSTATE[HY000] [2002] Connection refusedsomething went wrong

数据库.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";
        }

    }


}

index.php

<?php

require_once 'Db.php';

$db = new Db();

【问题讨论】:

    标签: php pdo


    【解决方案1】:

    在@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();
            }
    
    
        }
    
    
    }
    

    谢谢@addie,但我普遍的问题是,如果这不是 php 手册,为什么我需要在 pdo 中包含 port?

    【讨论】:

    • 你在使用 MAMP 吗?
    【解决方案2】:

    试试这个,对我有用

    $pdo = new PDO("mysql:host=$this->db_host;dbname=$this->db_name", $this->db_user, $this->db_pass);
    

    您将变量设置为$this-&gt;db_host = "127.0.0.1",但没有用于连接

    在没有课程的情况下尝试此操作,直到您连接并使用 $db-&gt;setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 检查是否有任何错误

    也可以试试端口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();
        }
    

    【讨论】:

    • 谢谢,但还是不行,我最近更新到 php 7 我之前用的是 5.1
    • 我想我明白了
    猜你喜欢
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 2017-08-08
    • 2015-03-01
    • 2023-02-03
    • 2020-04-24
    • 2013-10-28
    • 2018-06-08
    相关资源
    最近更新 更多