PHP pdo类getadresses警告并在非对象上调用成员函数prepare()

先生

我遵循了有关创建PDO类的教程,因此我可以更好地理解类和PDO。

我按照列出的步骤进行操作,但最终结果给了我1条警告和一个致命错误。

这是错误日志:

警告:PDO :: __ construct():php_network_getaddresses:getaddrinfo失败:名称或服务在第24行未知

致命错误:在第32行上的非对象上调用成员函数prepare()

我不是100%知道此错误的原因是什么,教程上的注释似乎表明它适用于他们,因此我必须在某些地方犯了一个错误。

这是我的类函数(请参阅代码注释以查看错误所在的行)

class DB {
    private $host   = DB_HOST;
    private $user   = DB_USER;
    private $pass   = DB_PASS;
    private $dbname = DB_NAME;

    private $stmt;

    private $dbh;
    private $error;

    public function __construct(){
        // Set DSN
        $dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname;

        // Set options
        $options = array(
            PDO::ATTR_PERSISTENT => true, 
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
        );      
        // Create a new PDO instanace
        try {
            // WARNING occurs here [line 24]
            $this->dbh = new PDO($dsn, $this->user, $this->pass, $options);
        }// Catch any errors
        catch (PDOException $e) {
            $this->error = $e->getMessage();
        }
    }

    public function query($query){
        // FATAL ERROR [line 34]
        $this->stmt = $this->dbh->prepare($query);
    }   

    public function bind($param, $value, $type = null){
        if (is_null($type)) {
          switch (true) {
            case is_int($value):
              $type = PDO::PARAM_INT;
              break;
            case is_bool($value):
              $type = PDO::PARAM_BOOL;
              break;
            case is_null($value):
              $type = PDO::PARAM_NULL;
              break;
            default:
              $type = PDO::PARAM_STR;
          }
        }
        $this->stmt->bindValue($param, $value, $type);
    }

    public function execute(){
        return $this->stmt->execute();
    }

    public function single(){
        $this->execute();
        return $this->stmt->fetch(PDO::FETCH_ASSOC);
    }

}
// Instantiate database.
$database = new DB();
define("DB_HOST", "secret");
define("DB_USER", "secret");
define("DB_PASS", "secret");
define("DB_NAME", "secret");

这也是我为测试新创建的类而进行的选择查询的示例:

$database->query('SELECT name FROM users WHERE uid > :id');
$database->bind(':id', 0);
$row = $database->single(); //get the first row selected
echo "<pre>";
print_r($row);
echo "</pre>";

所以我不清楚我的致命错误是什么。希望有人能解释我犯了什么错误,以便我更好地理解。

维克多·H

尝试在实例化类之前放置定义,如下所示:

    define("DB_HOST", "secret");
    define("DB_USER", "secret");
    define("DB_PASS", "secret");
    define("DB_NAME", "secret");

    // Instantiate database.
    $database = new DB();

并在任何代码之前将定义的值分配给“ __construct”方法内的属性:

    $this->host   = DB_HOST;
    $this->user   = DB_USER;
    $this->pass   = DB_PASS;
    $this->dbname = DB_NAME;

我希望这有帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用PHP在PDO中的非对象上调用成员函数prepare()

来自分类Dev

PHP致命错误:在非对象上调用成员函数prepare()

来自分类Dev

调用非对象 PHP PDO 上的成员函数 prepare()

来自分类Dev

PHP:在非对象上调用成员函数...

来自分类Dev

致命错误在非对象PHP上调用成员函数login()

来自分类Dev

PHP致命错误:在非对象上调用成员函数hasAttribute()

来自分类Dev

PHP致命错误:在非对象上调用成员函数asXML()

来自分类Dev

PHP:致命错误在非对象上调用成员函数format()

来自分类Dev

意外的PHP错误:在非对象上调用成员函数...

来自分类Dev

在非对象(PHP)上调用成员函数query()

来自分类Dev

PHP错误-在非对象上调用成员函数execute()

来自分类Dev

致命错误:在PHP的非对象上调用成员函数query()

来自分类Dev

PHP:致命错误:在非对象上调用成员函数insert()

来自分类Dev

php-在非对象中调用成员函数prepare()

来自分类Dev

PHP致命错误:在第45行的admin \ includes \ html \ database.class.php中的非对象上调用成员函数prepare()

来自分类Dev

PHP致命错误:在第45行的admin \ includes \ html \ database.class.php中的非对象上调用成员函数prepare()

来自分类Dev

尝试访问php中的父构造函数时,在PHP的非对象上调用成员函数query()

来自分类Dev

PDO致命错误-在非对象上调用成员函数prepare()

来自分类Dev

在PDO的非对象上调用成员函数prepare()

来自分类Dev

PDO错误-在非对象上调用成员函数prepare()

来自分类Dev

PDO致命错误-在非对象上调用成员函数prepare()

来自分类Dev

PDO致命错误:在非对象上调用成员函数prepare()(使用类)

来自分类Dev

PHP致命错误:在非对象上调用成员函数bind_param()(PHP-MySQL PreparedStatement)

来自分类Dev

PHP致命错误:在非对象上调用成员函数bind_param()(PHP-MySQL PreparedStatement)

来自分类Dev

数据库对象不起作用(PHP):“在非对象上调用成员函数query()”

来自分类Dev

PHP致命错误:在非对象上调用成员函数find()但我的函数正常工作

来自分类Dev

在PHP中转换日期时“在非对象上调用成员函数format()”

来自分类Dev

PHP致命错误:在非对象上调用成员函数...区分大小写

来自分类Dev

在非对象app \ Controller \ CarriesController.php第5行上调用成员函数create()

Related 相关文章

  1. 1

    使用PHP在PDO中的非对象上调用成员函数prepare()

  2. 2

    PHP致命错误:在非对象上调用成员函数prepare()

  3. 3

    调用非对象 PHP PDO 上的成员函数 prepare()

  4. 4

    PHP:在非对象上调用成员函数...

  5. 5

    致命错误在非对象PHP上调用成员函数login()

  6. 6

    PHP致命错误:在非对象上调用成员函数hasAttribute()

  7. 7

    PHP致命错误:在非对象上调用成员函数asXML()

  8. 8

    PHP:致命错误在非对象上调用成员函数format()

  9. 9

    意外的PHP错误:在非对象上调用成员函数...

  10. 10

    在非对象(PHP)上调用成员函数query()

  11. 11

    PHP错误-在非对象上调用成员函数execute()

  12. 12

    致命错误:在PHP的非对象上调用成员函数query()

  13. 13

    PHP:致命错误:在非对象上调用成员函数insert()

  14. 14

    php-在非对象中调用成员函数prepare()

  15. 15

    PHP致命错误:在第45行的admin \ includes \ html \ database.class.php中的非对象上调用成员函数prepare()

  16. 16

    PHP致命错误:在第45行的admin \ includes \ html \ database.class.php中的非对象上调用成员函数prepare()

  17. 17

    尝试访问php中的父构造函数时,在PHP的非对象上调用成员函数query()

  18. 18

    PDO致命错误-在非对象上调用成员函数prepare()

  19. 19

    在PDO的非对象上调用成员函数prepare()

  20. 20

    PDO错误-在非对象上调用成员函数prepare()

  21. 21

    PDO致命错误-在非对象上调用成员函数prepare()

  22. 22

    PDO致命错误:在非对象上调用成员函数prepare()(使用类)

  23. 23

    PHP致命错误:在非对象上调用成员函数bind_param()(PHP-MySQL PreparedStatement)

  24. 24

    PHP致命错误:在非对象上调用成员函数bind_param()(PHP-MySQL PreparedStatement)

  25. 25

    数据库对象不起作用(PHP):“在非对象上调用成员函数query()”

  26. 26

    PHP致命错误:在非对象上调用成员函数find()但我的函数正常工作

  27. 27

    在PHP中转换日期时“在非对象上调用成员函数format()”

  28. 28

    PHP致命错误:在非对象上调用成员函数...区分大小写

  29. 29

    在非对象app \ Controller \ CarriesController.php第5行上调用成员函数create()

热门标签

归档